为何要对Array要领举行归类剖析
由于它经常使用,而且口试必问
转变原数组的要领
pop 删除并返回数组末了一个元素
push 从末端给数组增加元素,返回新数组length值
reverse 倒置数组元素,返回倒置后的数组
shift 删除并返回第一个元素值
sort 数组排序
splice 删除指定位置最先指定长度的元素,返回被删除的项目。
unshift 向数组开首增加多个元素,返回新数组长度
不转变原数组
concat 返回兼并后数组的副本
join 返回一个经由过程衔接符衔接数组元素的字符串
slice 返回选中元素的新数组
toString 返回字符串等同于join()
怎样轮回一次删除多个元素并转变数组长度
for (var i = arr.length - 1; i >= 0; i--){
if(arr[i] === 1){
arr.splice(i,1)
}
}
操纵Array元素的callback的要领鸠合
forEach、map、filter、every、some、reduce、reduceRight
- forEach对元素上实行callback的操纵
var a = ['1', 20, 30];
a.forEach((item, index, a)=>{
++item
}) // 不会转变a值
a.forEach((item, index)=>{
a[index] = ++item
}) // 转变a值
- map对元素callback并返回一个由callback返回值构成的新数组
var a = ['1', 20, 30];
var b = a.map((item, index, a)=>{
return ++item // 假如没有return会输出undefined
}) // [2,22,32]
- filter返回元素callback返回值为true的元素构成的新数组
var a = ['1', 20, 30];
console.log(a.filter((item)=>{
return typeof item === 'string'
})) //['1']
- every当一切元素的callback都返回true时,值为true。用于推断一切元素是不是相符某一前提
var a = ['1', 20, 30];
console.log(a.every((item)=>{
return typeof item === 'string'
})) // false
- some只需个中一个元素callback返回true,值为true。用于推断某一个元素相符单一前提的状况
var a = ['1', 20, 30];
console.log(a.some((item)=>{
return typeof item === 'string'
})) // true
- reduce和reduceRight是数组元素两两根据callback的逻辑举行递归处置惩罚。返回处置惩罚完今后的效果。
var a = ['1', 20, 30];
var total = a.reduce(function(first, second) { return first + second; }, 2);
console.log(total) // 212030(((第二个参数2+'1')+20)+30)
var total = a.reduceRight(function(first, second) { return first + second; }, 2);
console.log(total) // 521(((第二个参数2+30)+20)+'1')
怎样轮回删除多个元素,数组长度稳定
for (let i = 0; i < arr.length; i++){
if(arr[i] === 1){
delete arr[i]
}
}
// 删除对应元素后,对应元素被置换为undefined,然则对应的i值(i in arr为false),直接复制arr[i]=undefined时i in arr 为 true
ES6 数组去重
let arr = [1,2,3,1,2,3,4]
let set = new Set(arr)
arr = [...set]
数组的一些扩大要领
Array.from(),Array.of(),Array.prototype.copyWithin(),includes()