如何从嵌套数组中拼接一个数组



我试图将一个嵌套数组从它的父数组中拼接出来。考虑下面的数组。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]。我到底错过了什么?

MDN显示Array.prototype.splice:

返回

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

所以,它不会只返回被删除的元素,它会被包装在一个数组中

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

在您的示例中,原始数组的元素恰好也是数组。

.splice()返回item的正确数组;尝试选择索引0返回数组返回[1,2];为了"平坦"item,试着利用Array.prototype.concat();参见如何在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);

要替换二维数组,您应该使用array[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);

您应该在items中引用第一个数组,然后将其拼接。试试下面的代码片段。

var items = [[1,2],[3,4],[5,6]];
var item = items[0].splice(0,2);
console.log(item);

相关内容

  • 没有找到相关文章

最新更新