javascript - 如何通过现有数组标签明智地收集/制作新数组?

标签 javascript jquery arrays

如何根据现有数组的键切片创建新数组?

例如我的输入是:

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"]}
]

javascript 中是否有任何简单易行的方法来实现这一点?

最佳答案

您可以先创建数组,然后使用 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);

关于javascript - 如何通过现有数组标签明智地收集/制作新数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44029064/

相关文章:

javascript - 在遵循 Angular2 Quickstart for beta.0 时无法加载 boot.js

javascript - 如何在 react 中创建折叠展开列表

javascript - 如何在数据后面添加<br>

javascript - 如果只有 1 个部分,则宽度​​应调整为 100%,否则将以 50% 的宽度继续

javascript - List.js参数问题

c - 为什么从控制台读取字符并存储在数组中时出现段错误?

c - 如何标记字符串[数组]?

javascript - Firefox 引导插件中的 CustomEvent 错误

javascript - 克隆 div 并删除类而不更改原始类

java applet - 数组检查