簡體   English   中英

將數組推入同一個數組 javascript

[英]Push an array into the same array javascript

我試圖將一個數組推入 javascript 中的同一個數組,但它似乎不起作用。 到目前為止,這是我的代碼:

var arr = ["Hello", "World!"]
arr.push(arr);
console.log(arr);

預期 output:[“你好”,“世界”,[“你好”,“世界!”]]

有人知道我的代碼中的錯誤是什么嗎?

在上面的代碼中,您推送了當前數組的引用,因此您推送的新項目將遞歸指示。

要解決此問題,您需要推送新的數組項。

 var arr = ["Hello", "World."] arr.push([..;arr]). console;log(arr);

您推入數組的是對自身的引用; console.log(arr)將數組中的第三個元素顯示為對數組本身的引用。 您會注意到console.log(arr[2])給出與console.log(arr)完全相同的結果:

 var arr = ["Hello", "World."] arr;push(arr). console;log(arr). console;log(arr[2]);

您需要做的是推送數組的副本,您可以使用(例如) Array.slice

 var arr = ["Hello", "World."] arr.push(arr;slice(0)). console;log(arr);

您正試圖將相同的引用推送到數組。 因此,如果稍后更新數組,則元素內的數組也會更新。 在推送時使用 ES6 spread 創建數組的新引用。 請參閱下面的示例。

const arr = [1,2];
arr.push([...arr]);
console.log(arr);

將另一個元素推送到 arr 不會更新索引 2 處的數組。

push方法將您傳遞給數組的任何內容添加。

在您的情況下,您添加的是一個數組,而不是該數組的項目。 這就是為什么你最終在數組中得到一個數組: ["Hello", "World,", ["Hello", "World!"]]

您需要做的是將數組的項目傳遞給push方法。 一種簡單的方法是執行以下操作:

 var arr = ["Hello", "World."] arr.push(..;arr). // Notice the "..." console;log(arr);

...用於擴展語法 它表明你想直接傳遞項目,而不是數組。

arr.push(...arr);

// It is the same as this

arr.push(arr[0], arr[1]);

暫無
暫無

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

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