gpt4 book ai didi

javascript - 使用字符串检索对象的值

转载 作者:行者123 更新时间:2023-11-28 01:07:50 24 4
gpt4 key购买 nike

在这里,我只能使用字符串,因此我还必须从字符串中检索对象的值,简而言之:

从我们编写的对象中检索值:

someObject.property1.name // for say 

但就我而言,我想使用字符串从对象中检索值,即

'someObject.property1.name' // for say

因为我不太有信心自己能做到这一点,所以我更喜欢在互联网上搜索,我得到的最合适的解决方案是

#1

 Object.byString = function(o, s) {
s = s.replace(/\[(\w+)\]/g, '.$1'); // convert indexes to properties
s = s.replace(/^\./, ''); // strip a leading dot
var a = s.split('.');
while (a.length) {
var n = a.shift();
if (n in o) {
o = o[n];
} else {
return;
}
}
return o;
}

来自here

#2

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;
};

来自here

但正如我所说,它们是最合适的示例,因为它们都采用一个额外参数,即 objO 等等...这给我,所以我尝试改进搜索2中的上述代码,因为它很紧凑,但这导致了失败。该代码是:

    var obj = {
foo: { bar: 'baz' }
};

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

(我编辑了他的代码只是为了一个实验)。上面的代码不需要 obj 这是一个完美的代码 - 如果它有效 - 并且没有看到任何错误,那么为什么这段代码不起作用,正确的代码是什么?

JSFIDDLE

提前致谢

最佳答案

您的#3 选项存在一些问题:

第一个 obj = obj[0]; 只是有 obj === "obj" 这根本不会帮助你。您需要实际获取 window["obj"] 才能获取顶级对象。

其次,您遍历 for 循环的次数过多,超出了 path 数组的末尾。

如果 obj 位于顶级范围,则在这两个区域中进行更改将使其正常工作:

var obj = {
foo: { bar: 'baz' }
};

var deep_value = function(path, baseObj){
baseObj = baseObj || window;
var obj = path.split('.');
obj = baseObj[obj[0]];
for (var i=1, path=path.split('.'), len=path.length; i<len; i++){
obj = obj[path[i]];
};
return obj;
};
alert(deep_value('obj.foo.bar'));

工作演示:http://jsfiddle.net/jfriend00/jGb5p/

<小时/>

这是一些经过清理的版本:

var obj = {
foo: { bar: 'baz' }
};

var deep_value = function(path, baseObj){
baseObj = baseObj || window;
var pieces = path.split('.');
// get root level object
var obj = baseObj[pieces[0]];
for (var i = 1, len = pieces.length; i < len; i++){
obj = obj[pieces[i]];
}
return obj;
};
console.log(deep_value('obj.foo.bar'));

工作演示:http://jsfiddle.net/jfriend00/7J4Jb/

关于javascript - 使用字符串检索对象的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24857544/

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