簡體   English   中英

我不明白為什么.splice()在這里返回一個空數組

[英]I do not understand why .splice() is returning an empty array here

希望能得到一些反饋。 我讀了MDN,但仍然聽不懂。 謝謝

function frankenSplice(arr1, arr2, n) {
    return arr2.splice(n,0,arr1);
}

console.log(frankenSplice([1, 2, 3], [4, 5, 6], 1));

splice用於將單個元素連接到一個數組。

如果要合並數組,請首先將元素拼接到一個數組:

var arr1 = [1,2,3,4]; // elements could be anything, I am just using integers here.
arr1.splice(n,0,element);

如果要合並兩個數組,請使用concat。

var arr1 = [1,2,3,4];
var arr2 = [5,6,7,8];
var result = arr1.concat(arr2);

正如上面正確提到的,拼接通常用於添加單個元素。 但是,沒有什么可以阻止它使用數組並將其作為元素添加到其他數組中。 返回空數組的原因是它返回已刪除元素的數組,而不是新數組。

如果要返回更新的數組,請執行

function frankenSplice(arr1, arr2, n) {
arr2.splice(n,0,arr1);
return arr2;
}

您要提出的問題可能不是您要回答的問題,而是來自MDN:

返回值包含已刪除元素的數組。 如果僅刪除一個元素,則返回一個元素的數組。 如果沒有刪除任何元素,則返回一個空數組。

您期望函數返回需要的拼接數組:

function frankenSplice(arr1, arr2, n) {
    arr2.splice(n,0,arr1);
    return arr2;
}

但是,我懷疑@jshamble是正確的,您實際上並沒有在使用.splice()。

Splice不會“等於”結果,而是將其直接寫回變量。 因此,而不是返回arr2.splice(n, 0, arr1); 您必須編寫arr2.splice(n, 0, arr1); return arr2 arr2.splice(n, 0, arr1); return arr2

暫無
暫無

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

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