が含まれている次の関数は、配列を入れ子にしているオブジェクトを再帰的にオブジェクトを検索した場合:最初のconsole.log(arr)
チェック配列が指定されたオブジェクト
function findDeep(arr, obj) {
console.log(arr)
if (arr.indexOf(obj) !== -1) {
console.log(arr)
return arr
} else {
arr.forEach(item => {
if (item.children) findDeep(item.children, obj)
})
}
}
const colors = {
children: [
{
name: 'white',
},
{
name: 'yellow',
children: [
{
name: 'black'
}
]
}
]
}
const color = {
name: 'black'
}
findDeep(colors.children, color)
はマッチした配列ログインん:
[
{ name: 'black' }
]
をしかし、彼はsecond console.log(arr)
に何も記録しません。 arr.indexOf(obj)
を返すべきではないので、2番目のconsole.log(arr)
は配列をログに記録しますか?
ここにはCodePenがあります。
プロパティの順序が常に同じ場合は、[JSON.stringify](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify )。 – destoryer