从二维数组重新创建一个数组

时间:2016-05-30 09:37:18

标签: javascript arrays multidimensional-array

这是我目前的问题。让我们说我在数组中有一些数组如下:

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

有没有人有线索? 非常感谢你。

5 个答案:

答案 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)