如何从嵌套对象获取键值

我在下面的对象中尝试获取所有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;

}

检查此小提琴以获取可行的解决方案。

以上是 如何从嵌套对象获取键值 的全部内容, 来源链接: utcz.com/qa/399586.html

回到顶部