js常见数组操作总结

目录

数组元素求和

数据去重

数组平铺

求数组最大/小值

求数组中每个元素出现的次数

取数组中的部分元素

删除数组中指定元素


数组元素求和

① reduce()

     let arr = [1,2,3]
     let res = arr.reduce((x,y) => x+y)

数据去重

① reduce() + includes()/indexOf() + push()

reduce()遍历原数组 + includes()/indexOf()判断元素在新数组中是否存在 + push()向新数组插入当前元素

    let arr =['hello','nihao','bonjour','hi','hello','nihao','nihao']
    let res = arr.reduce((prev, cur) => {
        if(!prev.includes(cur)){
            prev.push(cur)
        }
        return prev
    },[]) // 初始值设置为一空数组

② Array.filter() + indexOf() 遍历数组 返回指定条件的元素组成的新数组,不修改原数组

    let arr = ['hello','nihao','bonjour','hi','hello','nihao','nihao']
    let newArr = arr.filter((v, index)=> {
        return arr.indexOf(v) === index // 该元素第一次在数组中出现的位置是否等于当前索引值
    })

③ for...of + includes()/indexOf() + push() 

 for...of 遍历原数组 + includes()/indexOf()判断新数组是否存在当前元素 + push() 向新数组插入当前元素

返回一数组 不修改原数组

    let arr = ['hello','nihao','bonjour','hi','hello','nihao','nihao']
    let res = []
    for(item of arr){
        if(!res.includes(item)) {
            res.push(item)
        }
    }

数组平铺

①flat(Infinity)展开任意嵌套的深层数组  不修改原数组 会自动请清除空的元素

let arr = [1,[23,'ok'],123,[2,['3',[12,'hello']],0]]
arr.flat(Infinity)
console.log(arr)// (9) [1, 23, "ok", 123, 2, "3", 12, "hello", 0]

②reduce + concat + 递归

let arr = [1,[23,'ok'],123,[2,['3',[12,'hello']],0]]
function flatten(arr) {
    return arr.reduce((prev, cur) => Array.isArray(cur) ? prev.concat(flatten(cur)) : prev.concat(cur), [])// reduce方法初始值设为空数组
}
console.log(flatten(arr)) //(9) [1, 23, "ok", 123, 2, "3", 12, "hello", 0]

求数组最大/小值

Math.max()参数应该传入一参数序列,而不能是数组,即可以使用扩展运算符...apply将数组转为序列

 let arr = [2,26,52,12]
 let max = Math.max(...arr)
 let min = Math.min.apply(null,arr)

求数组中每个元素出现的次数

    let arr =['hello','nihao','bonjour','hi','hello','nihao','nihao']
    let res = arr.reduce((prev, cur) => {
        if(cur in prev){
            prev[cur]++
        }else{
            prev[cur] = 1
        }
        return prev
    },{})//初始值设为空对象
    console.log('元素:出现次数', res) //{hello: 2, nihao: 3, bonjour: 1, hi: 1}

取数组中的部分元素

slice() 取数组指定区域的元素 返回一新数组 不修改原数组

splice() 也可取数组指定区域的元素 但修改了原数组(指定区域的元素作为返回值的同时在原数组中被删除)

shift() 返回数组的第一个元素,但修改了原数组(第一个元素被删除)

pop() 返回数组的最后一个元素,但修改了原数组(最后一个元素被删除)


删除数组中指定元素

    function fun(val){
        if(arr.includes(val)){
            arr.splice(arr.indexOf(val), 1)// 删除该元素
            fun(val)// 判断是否有重复的该元素
        }
    }
发布了32 篇原创文章 · 获赞 1 · 访问量 2909

猜你喜欢

转载自blog.csdn.net/yyk5928/article/details/102942867