簡體   English   中英

如何從嵌套數組中拼接數組-javascript

[英]How to splice an array out of a nested array - javascript

我試圖從其父數組中拼接出一個嵌套數組。 考慮以下數組。 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); 

您應該在項目中引用第一個數組,然后對其進行拼接。 嘗試使用下面的代碼段。

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

要替換二維數組,您應使用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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM