js中Array要领归类剖析

为何要对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()

参考文献

Array的扩大要领

    原文作者:孙小渃
    原文地址: https://segmentfault.com/a/1190000013450963
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞