gpt4 book ai didi

javascript - 使用字符串从对象(带有数组)获取值

转载 作者:行者123 更新时间:2023-12-02 15:59:31 25 4
gpt4 key购买 nike

我找到了这段代码( https://stackoverflow.com/a/8817473/1778465 ),它工作得很好,但是当我想从数组(例如第 1 项)中获取值时,我得到 undefined,我不太确定我要做什么也可以获取数组项。有什么想法吗?

这是代码:

var obj = {
foo: { bar: {animals: [{name: "Billy"},{name: "Bob"},{name: "Joe"}]}}
};

var deep_value = function(obj, path){
for (var i=0, path=path.split('.'), len=path.length; i<len; i++){
obj = obj[path[i]];
};
return obj;
};

console.log(deep_value(obj, 'foo.bar.animals[1].name')); // Should show "Bob"

上面给出了以下错误:

Uncaught TypeError: Cannot read property 'name' of undefined

Fiddle Found Here

最佳答案

你就快到了。此代码将为您提供您想要的:

console.log(deep_value(obj, 'foo.bar.animals.1.name'));  // Should show "Bob"

编辑:如果您仍然想对数组使用 [1] 语法,这里有一个替代版本(通过 .[]:

var obj = {
foo: { bar: {animals: [{name: "Billy"},{name: "Bob"},{name: "Joe"}]}}
};

var deep_value = function(obj, path){
for (var i=0, path=path.split(/[\[\]\.]/), len=path.length; i<len; i++){
if (path[i]){
obj = obj[path[i]];
}
};
return obj;
};

console.log(deep_value(obj, 'foo.bar.animals[1].name')); // Should show "Bob"

关于javascript - 使用字符串从对象(带有数组)获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31324501/

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