首页 > 解决方案 > javascript - 使用for循环插入多维数组

问题描述

我有一个示例数组,arr = [5,4,3,3,2,2,1]我需要生成一个像这样的多维数组:

 [0] => Array
    (
        [0] => 5
    )
 [1] => Array
    (
        [0] => 4
    )
 [2] => Array
    (
        [0] => 3
        [1] => 3
    )
 [3] => Array
    (
        [0] => 2
        [1] => 2
    )
 [4] => Array
    (
        [0] => 1
    )

我不确定 javascript 数组是如何工作的。我试图编写代码,但最终所有新的数组元素都是1

var arr = [5,4,3,3,2,2,1]
var arrtemp = []
var temp = []
var tempval = 0
var col = 0


for (var i=0;i<arr.length;i++){
  if (i==0) {
    temp.push(arr[i])
    tempval = arr[i]
  }
  
  else {
    if (arr[i] == tempval){
      temp.push(arr[i]);
    }
    else {
      arrtemp[col] = temp;
      col++;
      temp.length =0;
      temp.push(arr[i]);
      tempval = arr[i];
    }
  }
}

console.log(arrtemp)

标签: javascriptmultidimensional-array

解决方案


幸运的是,你arr的已经排序了。我会reduce改用,其中累加器是一个数组数组。如果累加器中的最后一个数组与您正在迭代的新项目的值不同,请在其中创建一个新数组,然后推送到累加器中的最后一个数组:

var arr = [5,4,3,3,2,2,1];
const output = arr.reduce((a, num) => {
  if (!a.length || a[a.length - 1][0] !== num) {
    a.push([]);
  }
  a[a.length - 1].push(num);
  return a;
}, []);
console.log(output);


推荐阅读