gpt4 book ai didi

javascript - 使用点符号字符串访问对象子属性

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

我暂时遇到了一个看似非常简单的 JavaScript 问题,但也许我只是缺少正确的搜索关键字!

假设我们有一个对象

var r = { a:1, b: {b1:11, b2: 99}};

有多种方法可以访问 99:

r.b.b2
r['b']['b2']

我想要的是能够定义一个字符串

var s = "b.b2";

然后使用

访问 99
r.s or r[s] //(which of course won't work)

一种方法是为其编写一个函数,在点上分割字符串,并可能递归/迭代地获取属性。但有没有更简单/更有效的方法呢?这里的 jQuery API 有什么有用的吗?

最佳答案

这是我不久前编写的一个简单函数,但它适用于基本对象属性:

function getDescendantProp(obj, desc) {
var arr = desc.split(".");
while(arr.length && (obj = obj[arr.shift()]));
return obj;
}

console.log(getDescendantProp(r, "b.b2"));
//-> 99

尽管有一些答案将其扩展为“允许”数组索引访问,但这并不是真正必要的,因为您可以使用此方法使用点表示法指定数字索引:

getDescendantProp({ a: [ 1, 2, 3 ] }, 'a.2');
//-> 3

关于javascript - 使用点符号字符串访问对象子属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29174566/

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