Javascript:使用嵌套的for循环将嵌套数组转换为单个数组

时间:2018-11-22 16:19:48

标签: javascript loops for-loop nested

这只是我正在研究的简单javascript练习。

我正在尝试转换此数组...

var array = [
[1,2],
[3,4],
[5,6]
];

进入...

array = [1, 2, 3, 4, 5, 6];

使用此嵌套的for循环。

var series;
var storage = [];
for (var i = 0; i < array.length; i++) {
    for (var j = 0; j < array[i].length; j++) {
        series = array[i][j];
        for (var k = 0; k < 6; k++) {
            storage[k] = series;
        };
    };
};

console.log(storage);

输出为...

//Output: [6, 6, 6, 6, 6, 6]

为什么这是输出,我该如何解决?

8 个答案:

答案 0 :(得分:2)

    series = array[i][j];
    for (var k = 0; k < 6; k++) {
        storage[k] = series;
    };

严重的是,您在这里为结果数组的每个元素设置了相同的值。

您可能需要类似的东西

for(let x of array) {
    for(let y of x) {
        storage.push(y)
    }
}

或者,如果您的JS机器具有足够的实验性,只需

var storage = array.flat()

答案 1 :(得分:2)

for (var k = 0; k < 6; k++) {不是必需的。 array[i]将是主数组中的每个元素,因此在array[i]上进行迭代,您可以访问每个元素

var array = [
  [1, 2],
  [3, 4],
  [5, 6]
];


var series;
var storage = [];
for (var i = 0; i < array.length; i++) {
  for (var j = 0; j < array[i].length; j++) {
    storage.push(array[i][j])
  };
};

console.log(storage);

答案 2 :(得分:1)

您可以混合使用reduceconcat一行来实现所需的功能

var array = [
  [1, 2],
  [3, 4],
  [5, 6]
];

console.log(array.reduce((a, v) => a.concat(v), []));

至于为什么您的代码无法正常工作,主要取决于这一点

for (var k = 0; k < 6; k++) {
    storage[k] = series;
};

它将使用最后一个值为series的值覆盖数组中的所有内容,在您的情况下为6

答案 3 :(得分:1)

Array.concat可以自行执行

var merged = [].concat.apply([], array);

答案 4 :(得分:1)

var array = [
[1,2],
[3,4],
[5,6]
];
var newArray = [];
for (let i = 0; i < array.length; i++) {
   newArray = newArray.concat(array[i]); 

}
console.log(newArray)

答案 5 :(得分:0)

您可以使用getActiveItemIndex

参考:flatten

if (activeIndex == 1) {
  $('.opc-summary-wrapper').css("display", "block");
} 
else {
  $('.opc-summary-wrapper').css("display", "none");
}

答案 6 :(得分:0)

您可以使用ES6传播语法,如下所示:

$content = utf8_decode($dom->saveHTML($dom->documentElement));

答案 7 :(得分:0)

storage = [];
for(var i=0; i<array.length; i++)
    storage = storage.concat(array[i]);

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat