![](/img/trans.png)
[英]Why is .splice(1, 0, '.') returning an empty array? (Javascript)
[英]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.