如何从嵌套数组拼接数组 - javascript

时间:2015-09-01 02:17:08

标签: javascript arrays multidimensional-array splice

我试图将嵌套数组拼接出其父数组。考虑以下数组。 items.splice(0,1)应该给我第一个嵌套数组([1,2]),但它似乎给了我第一个嵌套数组,仍然嵌套在数组中:

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

var item = items.splice(0,1); // should slice first array out of items array

console.log(item); //should log [1,2], instead logs [[1,2]]

然而,似乎在另一个数组中返回所需的数组(第一项)。除非我做item[0],否则我无法获得完整数组。我错过了什么??

5 个答案:

答案 0 :(得分:4)

MDN说Array.prototype.splice

  

返回

     

包含已删除元素的数组。如果仅删除一个元素,则返回一个元素的数组。如果没有删除任何元素,则返回一个空数组。

因此,它不会只返回已删除的元素,它将被包装在一个数组中。

答案 1 :(得分:0)

splice()更改数组的内容,并返回包含已删除元素的数组。

在您的情况下,您的原始数组包含的元素也恰好是数组。这可能让你感到困惑。

答案 2 :(得分:0)

.splice()正在item返回正确的数组;尝试选择返回数组的索引0以返回[1,2];要“展平”item,请尝试使用Array.prototype.concat();见How to flatten array in jQuery?

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

var item = items.splice(0,1); // should slice first array out of items array
// https://stackoverflow.com/a/7875193/
var arr = [].concat.apply([], item);

console.log(item[0], arr);

答案 3 :(得分:0)

您应该在项目中引用第一个数组,然后对其进行拼接。尝试使用下面的代码段。

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

var item = items[0].splice(0,2);

console.log(item);

答案 4 :(得分:-1)

要替换二维数组,您应该使用数组[row] [col],例如

for(var row = 0; row < numbers.length; row++) {
    for(var col = 0; col < numbers[row].length; col++) {
        if (numbers[row][col] % 2 === 0) {
            numbers[row][col] = "even";
        } else {
            numbers[row][col] = "odd";
        }  
    }

}
console.log(numbers);