var arr8 = [
{ 'name': 'aaa', 'num': 1 },
{ 'name': 'bbb', 'num': 50 },
{ 'name': 'ccc', 'num': 20 }
]
var arr8_2 = [];
$.each(arr8, function (i, value) {
let s = {
name: value.name,
num: value.num
}
arr8_2.push(s) // 这里 push(s); 原始数组不会被改变;
// arr8_2.push(value) //这里直接 push(value); 原始数组会改变
if (value.num > 10) {
arr8_2[i].state = 0
} else {
arr8_2[i].state = 1
}
})
console.log(arr8, arr8_2);
var eData = [];
var tData = [];
res.data.forEach(it => {
eData.push(it)
tData.push(it)
})
var tData = res.data.concat();
var eData = res.data.concat();
循环 和 concat() 都是 数组深拷贝; 不覆盖旧的数据, 生成新的数组
循环,可以添加新的属性;
concat() 只是拷贝, 不能添加新属性
es6 的写法
var arr1 = [1, 2, 3];
var [...arr2] = arr1;
arr1[0] = 4;
console.log(arr1); //4, 2, 3
console.log(arr2); //1, 2, 3