我在下面的对象中尝试获取所有id值。
[{ "type": "test", "id": "100", "values": { "name": "Alpha" }, "validations": [] }, { "type": "services", "validations": [{ "id": "200", "name": "John", "selection": [{ "id": "300", "values": { "name": "Blob" } }] }] }]
使用以下代码,我仅获得第一个id值。有没有办法从嵌套对象中获取所有id值,而无需使用任何外部模块。
for (var prop in obj) { console.log(prop) if (prop === key) { set.push(prop); } }
预期产量
[100,200,300] //all id values
您可以使用如下所示的JavaScript函数来获取嵌套属性:
function findProp(obj, key, out) { var i, proto = Object.prototype, ts = proto.toString, hasOwn = proto.hasOwnProperty.bind(obj); if ('[object Array]' !== ts.call(out)) out = []; for (i in obj) { if (hasOwn(i)) { if (i === key) { out.push(obj[i]); } else if ('[object Array]' === ts.call(obj[i]) || '[object Object]' === ts.call(obj[i])) { findProp(obj[i], key, out); } } } return out; }
检查此小提琴以获取可行的解决方案。