【发布时间】:2016-02-01 18:33:00
【问题描述】:
我有深度嵌套的对象数组。我想编写一个函数来从这些数组中提取任意子对象。在某些情况下,嵌套属性的值是值和对象,在其他情况下,它们是数组。
数组示例如下:
[{parent: {level1: {level2: 'data'}}}]
[{parent: {level1: [{level2: {...}}, {level2: {...}}, {level2: {...}}]}}]
[{parent: {level1: [{level2: {level3: 'data'}}, {level2: {..}}, {level2: {..}}]}}]
在这样一个数组上调用提取函数应该会产生一个我们感兴趣的对象数组。
上述示例数组的函数调用示例及其结果:
extractChildren(source, 'level2') = [{level2: 'data'}]
extractChildren(source, 'level2') = [{level2: {...}, level2: {...}, level2: {...}]
extractChildren(source, 'level3') = [{level3: 'data'}]
有没有一种简洁的方法可以使用lodash 来实现这一点,或者我应该使用常规 JavaScript 来遍历属性?
附:将其视为等同于 XPath select all nodes with the name "nodename"
【问题讨论】:
-
您还应该举例说明应该准确提取哪些子对象,特别是如果一个潜在目标包含另一个潜在目标,结果应该是什么样子。
-
请显示更多。你能提供预期的输入、“调用”和预期的输出吗?
-
您的示例无效,您不能在同一级别保留多个具有相同键的项目。
-
@Festo 那些有不同的示例数组
-
@kyrylkov 与您的最新更新,是的 ;)
标签: javascript lodash