ES6个人笔记记录——数组扩展

// 扩展运算符
console.log(1,...[2,3,4],5);

// ES5
console.log(Math.max.apply(null,[14,2,48]));
// ES6
let {
      max } = Math;
console.log(max(...[14,2,48]));

// ES5
var arr1 = [0,1,2];
var arr2 = [3,4,5];
console.log("ES5:"+Array.prototype.push.apply(arr1,arr2),arr1);
// ES6
let arr3 = [0,1,2];
let arr4 = [3,4,5];
console.log("ES6:"+arr3.push(...arr4),arr3);

// 合并数组
// ES5
let [arr5,arr6,arr7] = [['a','b'],['c'],['d','e']];
console.log("ES5:"+arr5.concat(arr6,arr7));
// ES6
let [arr8,arr9,arr10] = [['a','b'],['c'],['d','e']];
console.log("ES6:"+[...arr8,...arr9,...arr10]);

// Array.from()
let arrayLike = {
     
	'0' : 'a',
	'1' : 'b',
	'2' : 'c',
	length : 3
};
// ES5
console.log([].slice.call(arrayLike));
// ES6
console.log(Array.from(arrayLike,));
console.log(Array.from(arrayLike,x => x + x ));

// 数组实例的enties()、values()、keys()
for(let index of ['a','b'].keys()){
     
	console.log("keys():"+index);
}

for(let elem of ['a','b'].values()){
     
	console.log("values():"+elem);
}

for(let [index,item] of ['a','b'].entries()){
     
	console.log("entries():",item,index);
}

// indexOf()与includes()比较
/*
	indexOf()有两个缺点。
	1.是不够语义化。
	含义是找到参数的第一个出现位置,所以要比较是不是-1,表达不够直观
	2.内部使用严格相等运算符'==='进行判断,会出现NaN的误判
 */
console.log([1,2,3].includes(1));
console.log([1,2,3].indexOf(1));
// ES6将空位明确转为undefined

你可能感兴趣的:(javascript,前端学习)