gpt4 book ai didi

javascript - 从具有子对象的对象数组中获取属性值

转载 作者:行者123 更新时间:2023-12-03 07:29:54 25 4
gpt4 key购买 nike

我有一个对象数组,每个对象都有他的子对象,如下所示:

var array = [{
name: "name",
children: {
name: "namename",
children: {
name: "namenamename",
prop: "56"
}
},
...
},
...
]

现在我想获取字段“prop”的值,但我想从主对象、它的子对象或子对象的子对象中执行此操作:

假设我有功能:

var get = function(obj) {
...
}

我可以发送到这个函数:

get(array[0])
get(array[0].children[0])
get(array[0].children[0].children[0])

我不想为此编写三个函数,如何使用一个 get() 函数来做到这一点?

我想从对象中获取“prop”字段,并且child的每个 child 的“prop”都是相同的。所以在上面的例子中,如果我用

调用函数 get()
array[0] //or 
array[0].children //or
array[0].children[0].children[0] //or
array[0].children[1].children[0] //or
array[0].children[0].children[1]

我应该始终获得相同的 prop 值。我需要有一个可以在整个对象中搜索的函数,但我不知道我是否从父级或其子级或子级的子级调用此函数

最佳答案

假设所有 children 属性都是数组,并且收集具有给定名称的所有属性,则此提案应该有效。

function getProp(array, prop) {
var r = [];
array.forEach(function (a) {
if (prop in a) {
r.push(a[prop]);
}
if (Array.isArray(a.children)) {
r = r.concat(getProp(a.children, prop));
}
});
return r;
}

var array = [{ name: "name", children: [{ name: "namename", children: [{ name: "namenamename", prop: "56" }] }] }],
prop = getProp(array, 'prop');

document.write('<pre>' + JSON.stringify(prop, 0, 4) + '</pre>');

关于javascript - 从具有子对象的对象数组中获取属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35845967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com