gpt4 book ai didi

javascript - 返回深层属性的值(如果存在)

转载 作者:行者123 更新时间:2023-11-28 01:33:04 25 4
gpt4 key购买 nike

我编写这个函数是为了搜索并返回对象中深层属性的值,并且想知道是否有一种方法可以使用递归或类似的方法来使函数执行相同的操作但代码更少(并且可能会消除最多可测试五个属性深度的限制)。

如果存在,该函数将返回一个深层属性值,否则返回未定义。

function getDeep(o, p2, p3, p4, p5) {
if (p5 !== undefined) {
if (o.hasOwnProperty(p2) && o[p2].hasOwnProperty(p3) && o[p2][p3].hasOwnProperty(p4) && o[p2][p3][p4].hasOwnProperty(p5)) {
return o[p2][p3][p4][p5];
}
} else if (p4 !== undefined) {
if (o.hasOwnProperty(p2) && o[p2].hasOwnProperty(p3) && o[p2][p3].hasOwnProperty(p4)) {
return o[p2][p3][p4];
}
} else if (p3 !== undefined) {
if (o.hasOwnProperty(p2) && o[p2].hasOwnProperty(p3)) {
return o[p2][p3];
}
} else if (p2 !== undefined) {
if (o.hasOwnProperty(p2)) {
return o[p2];
}
} else if (o !== undefined) {
return o;
}
}
window.onload = function () {
var obj = {a:{b:{c:1}}};
window.console.log(getDeep(obj, 'a', 'b', 'c')); // returns 1;
window.console.log(getDeep(obj, 'a', 'b', 'd')); // returns undefined;
}

最佳答案

.reduce对此很有用。

演示: http://jsfiddle.net/NU4vF/2

function getDeep() {
return [].reduce.call(arguments, function(obj, prop) {
return obj && obj[prop];
});
}

关于javascript - 返回深层属性的值(如果存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21870547/

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