这是我目前的问题。让我们说我在数组中有一些数组如下:
array[
array["3", 20160502, "0"],
array["5", 20160503, "1"],
array["1", 20160504, "0"],
array["8", 20160504, "2"],
array["30", 20160506, "2"],
array["23", 20160506, "1"],
array["34", 20160506, "0"],
]
第0个元素是总计数,第1个元素是数字中的日期,第2个元素是状态(0或1或2)。 我想重新排列上面的数组并创建一个新的数组,如下所示:
array[
array[20160502, "3", "0", "0"],
array[20160503, "0", "5", "0"],
array[20160504, "1", "0", "8"],
array[20160506, "34", "23", "30"]
]
有没有人有线索? 非常感谢你。
答案 0 :(得分:0)
您可以使用map重新排序:
var orig = [
["3", 20160502, "0"],
["5", 20160503, "1"],
["1", 20160504, "0"],
["8", 20160504, "2"],
["30", 20160506, "2"],
["23", 20160506, "1"],
["34", 20160506, "0"]
]
var reordered = orig.map(function(element) {
return [element[1], element[0], element[2]];
})
console.log(reordered);

答案 1 :(得分:0)
使用ES6,您可以执行以下操作:
for(let i of arr)
arr[i][a,b,c] = arr[i][c,b,a];
答案 2 :(得分:0)
您可以使用Array#forEach()
和一个对象作为所需组合的哈希表。
var array = [["3", 20160502, "0"], ["5", 20160503, "1"], ["1", 20160504, "0"], ["8", 20160504, "2"], ["30", 20160506, "2"], ["23", 20160506, "1"], ["34", 20160506, "0"]],
grouped = []
array.forEach(function (a) {
if (!this[a[1]]) {
this[a[1]] = [a[1], '0', '0', '0'];
grouped.push(this[a[1]]);
}
this[a[1]][1 + +a[2]] = a[0];
}, Object.create(null));
console.log(grouped);

答案 3 :(得分:0)
试试这个: -
var data = new Array(
Array("3", 20160502, "0"),
Array("5", 20160503, "1"),
Array("1", 20160504, "0"),
Array("8", 20160504, "2")
);
for(i in data){
[x,y,z] = data[i];
[x,y,z] = [y,z,x];
data[i]=[x,y,z];
}
答案 4 :(得分:0)
您可以使用forEach
var array = [["3", 20160502, "0"],["5", 20160503, "1"],["1", 20160504, "0"],["8", 20160504, "2"],["30", 20160506, "2"],["23", 20160506, "1"],["34", 20160506, "0"],
], result = [];
array.forEach(function(e) {
if (!this[e[1]]) {
this[e[1]] = [e[1], 0, 0, 0];
result.push(this[e[1]]);
}
if(e[2] == 0) {
this[e[1]][1] = Number(e[0]);
} else if(e[2] == 1) {
this[e[1]][2] = Number(e[0]);
} else if(e[2] == 2) {
this[e[1]][3] = Number(e[0]);
}
}, {})
console.log(result)