【发布时间】:2016-09-14 18:08:27
【问题描述】:
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(obj, 'key.0.myArray.2')(fiddle) -
请将此作为答案,我会赞成并可能接受此作为解决方案。
标签: javascript arrays