我需要你的帮助, 我正在开发一个消耗远程服务器数据的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]
}]
如何处理?我很困惑
答案 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>