gpt4 book ai didi

javascript - 通过路径访问嵌套属性

转载 作者:行者123 更新时间:2023-11-30 11:08:56 25 4
gpt4 key购买 nike

我正在尝试从字符串访问对象的嵌套属性。

这是我的示例代码:

var obj = {
'text': 'hello',
'foo': {
'float': 0.5,
'bar': {
'id': 42
}
}
};

var keyOne = 'text';
var keyTwo = 'foo.float';
var keyThree = 'foo.bar.id';

console.log(obj[keyOne]); // successfully log 'hello'
console.log(obj[keyTwo]); // trying to log '0.5'
console.log(obj[keyThree]); // trying to log '42'

我正尝试在 JS 中完成它,但我也准备好 jQuery 以获得更简洁的解决方案。

最佳答案

你必须为此做一些遍历。

Split它的路径是 .,然后是 Array.reduce每次迭代访问它通过 bracket-notation accessor 引用的属性的部分.

最终您将达到您所追求的值(value)。

var obj = {
'text': 'hello',
'foo': {
'float': 0.5,
'bar': {
'id': 42,
'baz': [{ name: 'Mary' }, { name: 'Jane' }]
}
}
};

var getValueByPath = (obj, path) =>
path.split('.').reduce((acc, part) => acc ? acc[part] : undefined, obj);

var keyOne = 'text';
var keyTwo = 'foo.float';
var keyThree = 'foo.bar.id';
var keyFour = 'foo.bar.baz.1.name';

console.log(getValueByPath(obj, keyOne));
console.log(getValueByPath(obj, keyTwo));
console.log(getValueByPath(obj, keyThree));
console.log(getValueByPath(obj, keyFour));

关于javascript - 通过路径访问嵌套属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54526127/

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