你不知道的快速复制数组小秘密

方法1、arrayObject.slice(start,end) 快速深度复制一个多维数组
关于 slice(start,end)方法说明

参数 描述
start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
返回值

返回一个新的数组,包含从 startend (不包括该元素)的 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']}]]
	

快速深度复制一个数组

猜你喜欢

转载自blog.csdn.net/fly_wugui/article/details/108532769