将多个数组合并为单个数组javascript

时间:2018-01-11 16:59:41

标签: javascript arrays angularjs

我需要你的帮助, 我正在开发一个消耗远程服务器数据的javascript客户端, 来自服务器的数据以这种形式出现:

[
["Thabit", "Doghri", 2, 1],
["Thabit", "Doghri", 1, 2],
["Thabit", "Doghri", 1, 3],
["Thabit", "Doghri", 1, 4],
["Thabit", "Doghri", 2, 5],
["Thabit", "Doghri", 3, 6],
["Thabit", "Doghri", 1, 7],
["Thabit", "Doghri", 1, 8],
["Thabit", "Doghri", 1, 9],
["Thabit", "Doghri", 1, 10],
["Thabit", "Doghri", 1, 11],
["Thabit", "Doghri", 5, 12],
["Ramzi", "Mejri", 2, 1],
["Ramzi", "Mejri", 1, 2],
["Ramzi", "Mejri", 2, 3],
["Ramzi", "Mejri", 2, 4],
["Ramzi", "Mejri", 1, 5],
["Ramzi", "Mejri", 1, 6],
["Ramzi", "Mejri", 1, 7],
["Ramzi", "Mejri", 1, 8],
["Ramzi", "Mejri", 1, 9],
["Ramzi", "Mejri", 4, 10],
["Ramzi", "Mejri", 1, 11],
["Ramzi", "Mejri", 3, 12]
]

我现在需要的是获得这样的数组:

  [{
      name: 'Thabet Doghri',
      data: [2, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 5]
  }, {
      name: 'Ramzi Mejri',
      data: [4, 6, 1, 3, 7, 9, 2, 2, 4, 2, 4, 5, 9]
  }]

如何处理?我很困惑

1 个答案:

答案 0 :(得分:3)

使用缩小和地图方法

var tmp=  data.reduce((a, c) => {
    const name = c.slice(0,2).join(' ');
    a[name] = a[name] || {name: name, data:[]};
    a[name].data.push(c[2])
    return a
  }, {})
var res = Object.keys(tmp).map(key=>tmp[key]);
console.log(JSON.stringify(res))
<script>
  const data = [
    ["Thabit", "Doghri", 2, 1],
    ["Thabit", "Doghri", 1, 2],
    ["Thabit", "Doghri", 1, 3],
    ["Thabit", "Doghri", 1, 4],
    ["Thabit", "Doghri", 2, 5],
    ["Thabit", "Doghri", 3, 6],
    ["Thabit", "Doghri", 1, 7],
    ["Thabit", "Doghri", 1, 8],
    ["Thabit", "Doghri", 1, 9],
    ["Thabit", "Doghri", 1, 10],
    ["Thabit", "Doghri", 1, 11],
    ["Thabit", "Doghri", 5, 12],
    ["Ramzi", "Mejri", 2, 1],
    ["Ramzi", "Mejri", 1, 2],
    ["Ramzi", "Mejri", 2, 3],
    ["Ramzi", "Mejri", 2, 4],
    ["Ramzi", "Mejri", 1, 5],
    ["Ramzi", "Mejri", 1, 6],
    ["Ramzi", "Mejri", 1, 7],
    ["Ramzi", "Mejri", 1, 8],
    ["Ramzi", "Mejri", 1, 9],
    ["Ramzi", "Mejri", 4, 10],
    ["Ramzi", "Mejri", 1, 11],
    ["Ramzi", "Mejri", 3, 12]
  ]
</script>