迭代嵌套的 JavaScript 对象
迭代嵌套的 JavaScript 对象可能具有挑战性,特别是当您需要检索由具体的财产价值。考虑下面的示例:
var cars = { label: 'Autos', subs: [ { label: 'SUVs', subs: [] }, { label: 'Trucks', subs: [ { label: '2 Wheel Drive', subs: [] }, { label: '4 Wheel Drive', subs: [ { label: 'Ford', subs: [] }, { label: 'Chevrolet', subs: [] } ] } ] }, { label: 'Sedan', subs: [] } ] };
递归迭代方法:
要深入遍历对象层次结构,您可以使用递归方法:
const iterate = (obj) => { Object.keys(obj).forEach(key => { console.log(`key: ${key}, value: ${obj[key]}`) if (typeof obj[key] === 'object' && obj[key] !== null) { iterate(obj[key]) } }) }
该函数递归地迭代对象,打印每个级别的键值对。如果遇到的属性包含另一个对象,则该函数以该对象作为参数调用自身。
非递归迭代方法:
另一种非递归方法涉及使用堆栈数据结构:
const iterate = (obj) => { const stack = [obj]; while (stack?.length > 0) { const currentObj = stack.pop(); Object.keys(currentObj).forEach(key => { console.log(`key: ${key}, value: ${currentObj[key]}`); if (typeof currentObj[key] === 'object' && currentObj[key] !== null) { stack.push(currentObj[key]); } }); } };
此函数利用堆栈迭代对象层次结构。它从堆栈中弹出最后一个元素并迭代其属性。如果属性保存一个对象,它会将该对象推送到堆栈上以进行进一步迭代。
以上是如何迭代嵌套的 JavaScript 对象?的详细内容。更多信息请关注PHP中文网其他相关文章!