我試圖將屬性添加到JavaScript的嵌套數組對象...如何將屬性添加到嵌套的JavaScript數組(對象)?
我需要遍歷樹得到的文本屬性的值,並將其轉換爲小寫,並添加這些數據作爲新的屬性(lowerText)
舊陣列:
var oldObject= [{
text: "Subgroup3",
items: [{
text: "subgroup5",
items: [{
text: "subgroup6",
items: [{
text: "subgroup7",
items: [{
text: "subgroup8"
}]
}]
}]
}]
}]
我需要如下新的數組對象:
var newObject= [{
text: "Subgroup3",
lowerText:"subgroup3",
items: [{
text: "subgroup5",
lowerText:"subgroup5",
items: [{
text: "subgroup6",
lowerText:"subgroup6",
items: [{
text: "subgroup7",
lowerText:"subgroup7",
items: [{
text: "subgroup8",
lowerText:"subgroup8",
}]
}]
}]
}]
}]
這是我試過了,廁所ping通過每個對象並將項目(數組)傳遞給遞歸函數來設置屬性,但它似乎不能正常工作。不知道我在做什麼錯,有人可以幫我用這段代碼嗎?
for (var i = 0; i < data.length; i++) {
data[i].lowerText=data[i].text.toLowerCase();
loopTree(data[i].items);
}
function loopTree(node){
if (node) {
$.each(node, function (idx, item) {
item.lowerText=item.text.toLowerCase();
if(item.items){
loopTree(item.items)
}
});
}
}
編輯:下面的代碼做的工作。
for (var i = 0; i < data.length; i++) {
if(data[i]){
process(data[i]);
}
}
function process(val) {
val.lowerText = val.text.toLowerCase();
if(val.items){
for(var i = 0, len = val.items.length; i < len; i++) {
process(val.items[i]);
}
}
}
僅供參考,這不是JSON,它的JavaScript數組和對象文字。 – bfavaretto