7

我有一个数组 ["0", "1", "2"] 我需要创建使它成为
["0", "1","2", "0", "1", "2"的函数]。我写了克隆函数:

arr = [0, 1, 2];
arr.clone = function() {
    var b = [];
    for (var i = 0; i < arr.length; i++) {
        b.push(arr[i]);
    }
    var c = b.concat(b);
    return c;
}
arr.clone();

我做对了吗?也许有更好或更短的方法来克隆元素?

4

4 回答 4

8

您只需要单独使用concat(),因为它会构建一个新数组:

var arr = [0, 1, 2];
arr = arr.concat(arr);  // [0, 1, 2, 0, 1, 2]
于 2013-09-06T08:34:49.383 回答
4
const arr = [0, 1, 2]
const combinedOne = [ ...arr, ...arr]

使用 es6,我们可以使用扩展运算符。

于 2019-04-12T17:44:51.290 回答
0
// try this
Array.prototype.self2 = function () {
    return ( Array.prototype.push.apply( this, this ), this );
};
console.log( [1,2,"a"].self2() );
//
//  [1, 2, "a", 1, 2, "a"]
//
于 2013-09-06T09:51:09.117 回答
-1

如果您的所有目标浏览器都支持方法,Frédéric Hamidi 的答案可能是最好的答案Array.concat,并且您不介意创建一个新数组。

以下是如何在不创建新数组的情况下保留旧数组引用,并且完全跨浏览器。

arr.push.apply(arr, arr);
于 2013-09-06T09:22:44.680 回答