Es6数组扩展

扩展运算符 …

示例

console.log(...[1,2,3]);
console.log([1,2,...[3,4,5]]);
function add(x) {
	console.log(...(x>0?[1,2,3]:[4,5,6])); 
}
add(10)

在这里插入图片描述
ES5和ES6的扩展运算符区别

		let arr = [1,2,3];
		function add(a,b,c){
			console.log(a+b+c);
		}
		//es5
		add.apply(null,arr);  //6
		//es6
		add(...arr)  //6

复制数组

		let arr = [1,2,3];
		//es5
		let arr3 = arr.concat([4]);
		//es6
		let arr3 = [...arr,4];
		
		console.log(arr2);
		console.log(arr3);

合并数组

		let arr = [1,2,3];
		let arr2 = [4,5,6]
		//es5
		let arr3 = arr.concat(arr2);
		//es6
		let arr4 = [...arr,...arr2];
		console.log(arr3);
		console.log(arr4);

这 两 种 方 法 是 浅 拷 贝 \color{#c7254e}{这两种方法是浅拷贝} 如果修改了数组的值被复制或者复制的新数组都会一同改变

Array.from()

Array.from()用于将伪数组或者可遍历的对象转化成真正的数组

		let arr = {
			0:'a',
			1:'b',
			2:'c',
			length:3
		};//伪数组
		//es5
		let newArr1=[].slice.call(arr);
		//es6
		let newArr2 = Array.from(arr);
		console.log(newArr1);
		console.log(newArr2);

这里科普一下 s l i c e \color{#c7254e}{slice} slice方法
s l i c e \color{#c7254e}{slice} slice方法用于提取数组某个部分
定义: s l i c e ( s t a r t , e n d ) \color{#c7254e}{slice(start,end)} slice(start,end)
start(提取元素包含开始元素)表示提取的开始位置
end(提取元素不含结束元素)表示提取的结束的位置
这两个值均可指定负数表示从倒数开始提取
如果两个参数都未指定返回整个 数 组 \color{#c7254e}{数组}

		let arr2 = [1,2,3,4,5];
		console.log(arr2.slice(1,3)); //从数组下标1开始提取到3但是不包含3
		console.log(arr2.slice(-2,-1));//从倒数第二个开始提取到 倒数第一个 不包含倒数第一个
		console.log(arr2.slice()); //返回整个数组

结果:
在这里插入图片描述

copyWithin()

将指定数组元素复制到其他位置
Array.prototype.copyWithin(target, start = 0, end = this.length)

  • target(必须) 替换的位置
  • start(可选) 默认为0 开始读取数据的位置
  • end (可选) 默认为数组的长度 结束读取数据的位置
		var arr2 = [1,2,3,4,5];
		console.log(arr2.copyWithin(0,3)); //将 3开始的数据转义到 从0 开始
		var arr2 = [1,2,3,4,5];
		console.log(arr2.copyWithin(0,4,5));//从4开始到下标为5的数据 转移到下标0的元素上
		var arr2 = [1,2,3,4,5];
		console.log(arr2.copyWithin(-1,0,1));//将0-1下标的数据转义到 倒数第一个元素上

在这里插入图片描述

你可能感兴趣的:(面试题,js,java,javascript)