按特定要求拆分阵列

时间:2017-08-29 08:56:46

标签: javascript underscore.js

我正在学习使用下划线js。我把数组分组了。但现在我需要拆分阵列。

我有一个分组的JSON数组。例如;

var arr = [{"key": "A", "value": ["erdem", "metin", "tamer", "hüseyin"]}]

我希望这是结果。

var arr = [{"key" : "A", "value" : "erdem"},{"key" : "A", "value" : "metin"},{"key" : "A", "value" : "tamer"},{"key" : "A", "value" : "hüseyin"}]

如果你告诉我该怎么做,我很高兴。

3 个答案:

答案 0 :(得分:2)

Vanilla JS,没有 Underscore / lodash



var arr = [
  {"key": "A", "value": ["erdem", "metin", "tamer", "hüseyin"]},
  {"key": "B", "value": ["foo", "bar"]}
];

// create modified array of objects
var result = arr.map(item => item.value.map(v => ({ key:item.key, value:v })) );

// print result
console.log( [].concat(...result) );




答案 1 :(得分:0)

@forguta您可以使用此方法获取所需的输出。

var arr = [{"key": "A", "value": ["erdem", "metin", "tamer", "hüseyin"]}]
_.map(arr,function(item){ 
     var temp=[];      
     _.map(item.value, function(x){         
      temp.push({key: item.key, value: x});      
    }); 
  return temp;  
});

你也可以在没有临时变量的情况下实现结果(简短形式)

   _.map(arr,function(item){ 
      return _.map(item.value, function(x){
         return {key: item.key, value: x};
        });
    });

答案 2 :(得分:0)

主阵列reduce然后concat每个结果数组的初始空数组

怎么样?

arr.reduce((i, o)=>i.concat(o.value.map(v=>({key: o.key, value: v}))), []);

var arr = [
  {"key": "A", "value": ["erdem", "metin", "tamer", "hüseyin"]},
  {"key": "B", "value": ["foo", "bar"]}
];

var res = arr.reduce((i, o)=>i.concat(o.value.map(v=>({key: o.key, value: v}))), []);

console.log(res);