Skip to content

使用 for 循环

js
let a = ["a", "b", "c", "d"];
let b = [];
for (let i = 0; i < a.length; i++) {
  b[i] = a[i];
}
let a = ["a", "b", "c", "d"];
let b = [];
for (let i = 0; i < a.length; i++) {
  b[i] = a[i];
}

使用 ES6 新增 Array.form()方法

js
let a = ["a", "b", "c", "d"];
let c = Array.from(a);
let a = ["a", "b", "c", "d"];
let c = Array.from(a);

使用 slice()

js
let box = list.slice();
let box = list.slice();

使用 concat()

js
let box = [].concat(list);
let box = [].concat(list);

ES6 扩展运算符

js
let box = [...list];
let box = [...list];

复制对象数组/对象数组深拷贝

js
var array = [{ number: 1 }, { number: 2 }, { number: 3 }];
function objArrDeepCopy(obj) {
  var newobj = obj.constructor === Array ? [] : {};
  if (typeof obj !== "object") {
    return;
  }
  for (var i in obj) {
    newobj[i] = typeof obj[i] === "object" ? objArrDeepCopy(obj[i]) : obj[i];
  }
  return newobj;
}

var copyedArray = objArrDeepCopy(array);
copyedArray[0].number = 100;
console.log(array); //  [{number: 1}, { number: 2 }, { number: 3 }]
console.log(copyedArray); // [{number: 100}, { number: 2 }, { number: 3 }]
var array = [{ number: 1 }, { number: 2 }, { number: 3 }];
function objArrDeepCopy(obj) {
  var newobj = obj.constructor === Array ? [] : {};
  if (typeof obj !== "object") {
    return;
  }
  for (var i in obj) {
    newobj[i] = typeof obj[i] === "object" ? objArrDeepCopy(obj[i]) : obj[i];
  }
  return newobj;
}

var copyedArray = objArrDeepCopy(array);
copyedArray[0].number = 100;
console.log(array); //  [{number: 1}, { number: 2 }, { number: 3 }]
console.log(copyedArray); // [{number: 100}, { number: 2 }, { number: 3 }]

多层深拷贝

js