我正在学习使用下划线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"}]
如果你告诉我该怎么做,我很高兴。
答案 0 :(得分:2)
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);