我有一个数组[“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();
我做得对吗?也许有更好或更短的方法来克隆元素?
答案 0 :(得分:6)
您只需要自己使用concat(),因为它构建了一个新数组:
var arr = [0, 1, 2];
arr = arr.concat(arr); // [0, 1, 2, 0, 1, 2]
答案 1 :(得分: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"]
//
答案 2 :(得分:0)
const arr = [0, 1, 2]
const combinedOne = [ ...arr, ...arr]
使用es6,我们可以使用散布运算符。
答案 3 :(得分:-1)
Array.concat
方法,并且您不介意创建新阵列,那么FrédéricHamidi的回答可能是最佳答案。
以下是如何在不创建新数组的情况下保留旧数组引用,并且完全是跨浏览器的。
arr.push.apply(arr, arr);