首页 > 解决方案 > UnderscoreJS - 如何展平嵌套属性

问题描述

我有如下所示的 JSON 数组:

[{
   'a': 1,
   'b': 10,
   'aa': { 'a': 11, 'ab': 110 }
}, {
   'a': 2,
   'b': 20,
   'aa': { 'a': 22, 'ab': 220 }
}, {
   'a': 3,
   'b': 30,
   'aa': { 'a': 33, 'ab': 330 }
}, ...]

编辑: 这里提到的数组是动态的。它可能包含比此处指定的更多或更少的元素。

并使用Underscore,我想展平这个数组,以便我可以得到以下输出:

[{ 'a': 1},
{ 'a': 11 }, 
{ 'a': 2 },
{ 'a': 22 }, 
{ 'a': 3 },
{ 'a': 33 }]

标签: javascriptunderscore.js

解决方案


我在 UnderscoreJS 中找不到合适的方法来执行此操作,因为它无法通过简单的数组展平来实现。

你可以像这样使用纯 JavaScript 来做到这一点:

const source = [{
   'a': 1,
   'b': 10,
   'aa': { 'a': 11, 'ab': 110 }
}, {
   'a': 2,
   'b': 20,
   'aa': { 'a': 22, 'ab': 220 }
}, {
   'a': 3,
   'b': 30,
   'aa': { 'a': 33, 'ab': 330 }
}];

const result = source.reduce((acc, item) => {
  acc.push({a: item.a});
  acc.push({a: item.aa.a});
  return acc;
}, []);

console.log(result);


推荐阅读