以下の「ルート」オブジェクトなどのネストされたオブジェクトを使用します。配列の長さが 2 未満の配列に「ダミー」オブジェクトを追加するにはどうすればよいですか。
var root = {
children: [
{
children: [
{value: 42}
]
},
{
children: [
{value: 42},
{value: 42}
]
},
{value: 42}
]
};
配列に挿入したいオブジェクトの例array.length < 2
:
var dummy = {value: 10, dummy: 1};
結果の配列:
var rootWithDummies = {
children: [
{
children: [
{value: 42},
{value: 10, dummy: 1}
]
},
{
children: [
{value: 42},
{value: 42}
]
},
{value: 42}
]
};
まだ学ぶべきことがたくさんありますが、再帰を使用しようとしています:
元の addDummies 関数を編集して、いつすべきかをチェックしてnest.values
いましたnest.children
CORRECTED FUNCTION
function addDummies (nest, dummyObject) {
if (nest.hasOwnProperty("children")) {
if (nest.children.length < 2) {
nest.children.push(dummyObject)
}
nest.children.forEach(function (item) {
addDummies(item);
;})
}
}
古い間違った関数 function addDummies (ネスト、ダミーオブジェクト) {
if (nest.hasOwnProperty("values")) {
if (nest.values.length < 2) {
nest.values.push(dummyObject)
}
nest.values.forEach(function (item) {
addDummies(nest.values);
;})
}
}
この試みは、addDummies を再帰的に呼び出しているようには見えず、'values' の値が実際に配列である (したがって、長さのプロパティを持っている) ことを確認していません。