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",
}]
}]
}]
}]
}]
これは私が試したもので、各オブジェクトをループし、アイテム(配列)を再帰関数に渡してプロパティを設定しましたが、うまく機能していないようです。何が間違っているのかわかりません。誰かがこのコードで私を助けてくれますか?
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]);
}
}
}