如何按现有数组标记收集/制作新数组?

时间:2017-05-17 15:27:35

标签: javascript jquery arrays

如何通过切换现有数组来创建新数组?

例如我的输入是:

Conditions...

我的输出应该是:

var array = [{"one":"1"},{"one":"01"},{"one":"001"},{"one":"0001"},{"one":"00001"},
{"two":"2"},{"two":"02"},{"two":"002"},{"two":"0002"},{"two":"00002"},
{"three":"3"},{"three":"03"},{"three":"003"},{"three":"0003"},{"three":"00003"},
{"four":"4"},{"four":"04"},{"four":"004"},{"four":"0004"},{"four":"00004"},
{"five":"5"},{"five":"05"},{"five":"005"},{"five":"0005"},{"five":"00005"} ];

有没有简单明了的方法来实现var outPutArray = [ {"one" : ["1","01","001","0001","00001"]}, {"two":["2","02","002","0002","00002"]}, {"three":["3","03","003","0003","00003"]}, {"four":["4","04","004","0004","00004"]}, {"five":["5","05","005","0005","00005"]} ]

2 个答案:

答案 0 :(得分:2)

您可以先创建数组,然后使用forEach()循环添加到该数组,并使用thisArg参数检查具有相同键的对象是否已存在。

var array = [{"one":"1","abc":"xyz"},{"one":"01"},{"one":"001"},{"one":"0001"},{"one":"00001"},{"two":"2"},{"two":"02"},{"two":"002"},{"two":"0002"},{"two":"00002"},{"three":"3"},{"three":"03"},{"three":"003"},{"three":"0003"},{"three":"00003"},{"four":"4"},{"four":"04"},{"four":"004"},{"four":"0004"},{"four":"00004"},{"five":"5"},{"five":"05"},{"five":"005"},{"five":"0005"},{"five":"00005","abc":"xya"} ];

var result = [];
array.forEach(function(e) {
  var that = this;

  Object.keys(e).forEach(function(key) {
    if(!that[key]) that[key] = {[key]: []}, result.push(that[key])
    that[key][key].push(e[key])
  })
}, {})

console.log(result);

答案 1 :(得分:1)

var outputArray=[array.reduce((obj,el)=>(Object.keys(el).forEach(key=>(obj[key]=obj[key]||[]).push(el[key])),obj),{})];

将数组减少为Object,将每个Arrays对象键作为包含该值的Array放入Object。

http://jsbin.com/leluyaseso/edit?console