方法1、arrayObject.slice(start,end) 快速深度复制一个多维数组
关于 slice(start,end)
方法说明
参数 | 描述 |
---|---|
start | 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。 |
end | 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。 |
返回值
返回一个新的数组,包含从 start
到 end
(不包括该元素)的 arrayObject
中的元素。
如果想删除数组中的一段元素,应该使用方法 Array.splice()
。
splice() 方法会直接对数组进行修改
。
例:
var classArr= [
[
{
name: 'stundentA',
age: 18,
subject:['科目一','科目二','科目三']
}
],
[
{
name: 'stundentB',
age: 22,
subject:['科目1','科目2','科目3']
}
],
[
{
name: 'stundentC',
age: 21,
subject:['科目A','科目B','科目C']
}
]
];
var copyArr = classArr.slice();
classArr.splice(2,1); // [{name: 'stundentC',age: 21,subject:['科目A','科目B','科目C']}]
console.log(classArr) // [[{name: 'stundentA',age: 18,subject:['科目一','科目二','科目三']}],[{name: 'stundentB',age: 22,subject:['科目1','科目2','科目3']}]]
console.log(copyArr) // [[{name: 'stundentA',age: 18,subject:['科目一','科目二','科目三']}],[{name: 'stundentB',age: 22,subject:['科目1','科目2','科目3']}],[{name: 'stundentC',age: 21,subject:['科目A','科目B','科目C']}]]
方法2、使用es6的解构
var classArr= [
[
{
name: 'stundentA',
age: 18,
subject:['科目一','科目二','科目三']
}
],
[
{
name: 'stundentB',
age: 22,
subject:['科目1','科目2','科目3']
}
],
[
{
name: 'stundentC',
age: 21,
subject:['科目A','科目B','科目C']
}
]
];
var copyArr = [...classArr];
classArr.splice(2,1); // [{name: 'stundentC',age: 21,subject:['科目A','科目B','科目C']}]
console.log(classArr) // [[{name: 'stundentA',age: 18,subject:['科目一','科目二','科目三']}],[{name: 'stundentB',age: 22,subject:['科目1','科目2','科目3']}]]
console.log(copyArr) // [[{name: 'stundentA',age: 18,subject:['科目一','科目二','科目三']}],[{name: 'stundentB',age: 22,subject:['科目1','科目2','科目3']}],[{name: 'stundentC',age: 21,subject:['科目A','科目B','科目C']}]]
快速深度复制一个数组