gpt4 book ai didi

javascript - 在 javascript 中访问嵌套数组/属性

转载 作者:行者123 更新时间:2023-11-29 21:26:48 26 4
gpt4 key购买 nike

效用函数来自 this answer允许轻松访问对象的嵌套属性,并在其中一个父属性不存在时返回 null(或未定义)。

原代码:

get = function(obj, key) {
return key.split(".").reduce(function(o, x) {
return (typeof o == "undefined" || o === null) ? o : o[x];
}, obj);
}
get(user, 'loc.lat') // 50
get(user, 'loc.foo.bar') // undefined

我真的很想用这个,但我也需要能够使用嵌套数组。

示例:

var childArray = [0,1,2]
var parentArray = [{myArray: childArray}]
var obj = {key: parentArray}

我想像这样扩展效用函数:

get(obj, 'key[0].myArray[2]');      // 2
get(obj, 'key[0].foo[2]'); // null
get(obj, 'key[0].myArray[42]'); // null

理想情况下,它也应该能够对此进行评估

var childArray = [0,1,2]
var parentArray = [childArray, childArray]
var obj = {key: parentArray}

get(obj, 'key[1][0]'); // 0
get(obj, 'foo[1][0]'); // null

问题:

是否可以使用给定的字符串引用访问数组 arr,例如 "arr[0]"(没有正则表达式来删除括号...)?

您是否知道更优雅的解决方案可以实现上述示例中的结果?

最佳答案

最简单的方法是更改​​您传递给 get() 的路径/ key

来自

get(obj, 'key[0].myArray[2]');

get(obj, 'key.0.myArray.2');

var get = function(obj, key) {
return key.split(".").reduce(function(o, x) {
return (typeof o == "undefined" || o === null) ? o : o[x];
}, obj);
}

var childArray = [0,1,2]
var parentArray = [{myArray: childArray}]
var obj = {key: parentArray}

console.log(get(obj, 'key.0.myArray.2')); // 2
console.log(get(obj, 'key.0.foo.2')); // null
console.log(get(obj, 'key.0.myArray.42')); // null

var childArray2 = [0,1,2]
var parentArray2 = [childArray2, childArray2]
var obj2 = {key: parentArray2}

console.log(get(obj2, 'key.1.0')); // 0
console.log(get(obj2, 'foo.1.0')); // null

关于javascript - 在 javascript 中访问嵌套数组/属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37296490/

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