簡體   English   中英

有沒有辦法在javascript中使用Array.splice,第三個參數作為數組?

[英]Is there a way to use Array.splice in javascript with the third parameter as an array?

我正在嘗試以下方法:

var a1 = ['a', 'e', 'f'];  // [a, e, f]
var a2 = ['b', 'c', 'd'];  // [b, c, d]
a1.splice(1, 0, a2);       // expected [a, b, c, d, e, f]
                           // actual (a, [b, c, d], e, f]

通過將a2作為不確定大小的數組存在,我被限制在我的用例中。 有沒有人知道一種方法來拼接一個數組作為替換,或者一個內置函數來做到這一點? 我知道我可以迭代a2的元素並一次一個地拼接它們,但我更喜歡最快的方法,因為我需要做很多事情。

Array.splice在前兩個之后支持多個參數。 這些參數都將添加到數組中。 知道這一點,您可以使用Function.apply將數組作為參數列表傳遞。

var a1 = ['a', 'e', 'f'];
var a2 = ['b', 'c', 'd'];

// You need to append `[1,0]` so that the 1st 2 arguments to splice are sent
Array.prototype.splice.apply(a1, [1,0].concat(a2));

使用ES6,您可以使用擴展運算符。 它使它更簡潔和可讀。

 var a1 = ['a', 'e', 'f']; var a2 = ['b', 'c', 'd']; a1.splice(1, 0, ...a2); console.log(a1) 

var a1 = ['a', 'e', 'f'],
    a2 = ['b', 'c', 'd'];

a1.splice(1, 0, a2);

var flatten = [].concat.apply([], a1); // ["a", "b", "c", "d", "e", "f"]

這應該可以解決問題。

var a1 = ['a', 'e', 'f'];
var a2 = ['b', 'c', 'd'];

a1.concat(a2, a1.splice(1,a1.length-1)) // [a, b, c, d, e, f]

試試這個:

var params = a2.slice(0);
params.unshift(1,0);
a1.splice.apply(a1,params);

在更一般的情況下:

Array.prototype.splice_multi = function(offset,todelete,insert) {
    var params = insert.slice(0);
    params.unshift(offset,todelete);
    return this.splice.apply(this,params);
};
a1.splice_multi(1,0,a2);
Array.prototype.splice.apply( [1,2,3], [2, 0].concat([4,5,6]) );
private moveElements(source: Array<any>, target: Array<any>) {
    target.push(...source);
    source.splice(0, source.length);
    //or
    [].push.apply(target,source);
    source.splice(0, source.length);
}

暫無
暫無

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

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