gpt4 book ai didi

javascript - 获取嵌套的对象值

转载 作者:行者123 更新时间:2023-12-02 07:31:32 26 4
gpt4 key购买 nike

给定以下对象:

var inputMapping = {
nonNestedItem: "someItem here",
sections: {
general: "Some general section information"
}
};

我正在为 get 编写一个函数通过传入字符串 "nonNestedItem" 获取该数据或者在嵌套情况下 "sections.general" .我不得不使用 eval 我想知道是否有更好的方法来做到这一点。

这是我目前所拥有的,并且工作正常。但要改进!

function getNode(name) {
var n = name.split(".");

if (n.length === 1) {
n = name[0];
} else {
var isValid = true,
evalStr = 'inputMapping';

for (var i=0;i<n.length;i++) {
evalStr += '["'+ n[i] +'"]';

if (eval(evalStr) === undefined) {
isValid = false;
break;
}
}

if (isValid) {
// Do something like return the value
}
}
}

Linky to Jsbin

最佳答案

您可以使用 Array.prototype.reduce像这样的功能

var accessString = "sections.general";

console.log(accessString.split(".").reduce(function(previous, current) {
return previous[current];
}, inputMapping));

输出

Some general section information

如果你的环境不支持reduce,你可以使用这个递归版本

function getNestedItem(currentObject, listOfKeys) {
if (listOfKeys.length === 0 || !currentObject) {
return currentObject;
}
return getNestedItem(currentObject[listOfKeys[0]], listOfKeys.slice(1));
}
console.log(getNestedItem(inputMapping, "sections.general".split(".")));

关于javascript - 获取嵌套的对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21096057/

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