【发布时间】:2021-07-03 14:57:46
【问题描述】:
假设我有一个这样定义的对象:
const me = {
id: 1,
name: 'James',
age: 40,
family: {
mother: {
id: 101,
name: 'Bea',
age: 66
},
father: {
id: 102,
name: 'Martin',
age: 69
},
children: [
{
id: 11,
name: 'Tom',
age: 18,
},
{
id: 12,
name: 'Nancy',
age: 13,
},
],
},
}
如何通过提供一个由链接属性名称组成的字符串数组来轻松访问一个值? 例如,调用:
search(me, ['family', 'father', 'age'])
与以下内容相同:
me['family']['father']['age']
将返回69。
附言:
让search(me, ['family', 'children', 'name']) 返回['Tom', 'Nancy'] 怎么样?
PSS:
甚至search(me, ['family', 'children', ['name', 'age']])返回
[
{
name: 'Tom',
age: 18
},
{
name: 'Nancy',
age: 13
}
]
编辑: 我去检查了 lodash/deepdash 库,但我自己并不能真正弄清楚。
【问题讨论】:
-
看看Accessing nested JavaScript objects and arrays by string path 除了在你的情况下你已经有了数组(不需要分割路径)。
-
到目前为止你尝试过什么?您是否尝试过为此编写实用程序函数?
-
仅供参考,这不是 Java,所以:
{'family', 'father', 'age'}不是数组。 -
你应该一次问一个问题,我已经回答了第一个问题,但是你的 PS 和 PSS 是不同的问题
标签: javascript arrays angular typescript properties