【JS数组的相关操作】



前言

概述:本文主要记录开发中常用的JS数组的相关操作

提示:以下是本篇文章正文内容,下面案例可供参考


一、数组某元素出现次数【统计】

方法一: for循环

代码如下(示例):

let arr = ['周杰伦','周杰伦', '陈奕迅', '周深', '张杰', '莫文蔚', '邓紫棋', '那英', '王菲']
var brr = []
for (let i = 0; i < arr.length; i++) {
    let key = arr[i]
    if (brr[key]) {
        brr[key]++
    }else{
        brr[key] = 1   
    }
   
}
console.log(brr) //[周杰伦: 2, 陈奕迅: 1, 周深: 1, 张杰: 1, 莫文蔚: 1, …]


方法二:reduce

代码如下(示例):参考链接

let arr = ['周杰伦''陈奕迅''周深''张杰''莫文蔚''邓紫棋''那英''王菲']

let curnt = (arr) =>{
    let res = arr.reduce((preArr , curItem)=>{
        preArr[curItem] = preArr[curItem] ? preArr[curItem] + 1 : 1
        return preArr    
    },[])
    return res
}
console.log(curnt(arr)) //[周杰伦: 1, 陈奕迅: 1, 周深: 1, 张杰: 1, 莫文蔚: 1, …]

// redcue( 累加值,初始值,index,arr)
// 当设初始值为空 {} 值时,累加值的默认初始值curItem = 数组第一个值
// 累加器(第一个值,第二个值) ;
// 第一个值:上一次累加返回的值 ,第二个值:当前设置的初始值

二、数组去重的几种方式【去重】

方法一:new Set()、配合[...]、Array.from()

代码如下(示例):参考链接

let arr = ['a', 'b', 'c', 'd', 'a', 'a', 'b', 'd', 'd', 'd', 'd', 'c', 'c', 'c']

function unique1(arr) {
    const res = new Set(arr);
    // return Array.from(res); 
    return [...res];
}
console.log(unique1(arr)) //['a', 'b', 'c', 'd']

方法二:重组法

代码如下(示例):参考链接

let arr = ['a', 'b', 'c', 'd', 'a', 'a', 'b', 'd', 'h', 'f', 'd', 'f', 'e', 'c']


//从头找到尾,找不到的依次返回,组成新的数组
function unique2(arr) {
    const newArr = [];
    arr.forEach(item => {
        if (!newArr.includes(item)) newArr.push(item);
    })
    return res
}
console.log(unique2(arr)) //['a', 'b', 'c', 'd', 'h', 'f', 'e']

方法三: ES6 Map方法

代码如下(示例):参考链接

let arr = ['a', 'a', 'a', 'd', 'a', 'a', 'b', 'd', 'c', 'f', 'd', 'f', 'c', 'c']

function unique3(arr) {
    const res = new Map()
    for (let item of arr) res.set(item)
    // return [...res].map(itemArr=>itemArr[0])
    return Array.from(res).map(itemArr => itemArr[0])
}
console.log(unique3(arr))//['a', 'd', 'b', 'c', 'f']

方法四:reduce

代码如下(示例):参考链接

let arr = ['a', 'a', 'a', 'd', 'a', 'a', 'b', 'd', 'c']

function unique4(arr) {
    return arr.reduce((preArr, curArr) => {
        if (!preArr.includes(curArr)) preArr.push(curArr)
        return preArr
    }, [])
}
console.log(unique4(arr)) //['a', 'd', 'b', 'c']

方法五:filter 、indexOf

代码如下(示例):参考链接

let arr = ['a', 'e', 'a', 'd', 'a', 'f', 'b', 'd', 'c']

function unique5(arr) {
    return arr.filter((item, index, arr) => arr.indexOf(item) === index)
}
console.log(unique5(arr)) //['a', 'e', 'd', 'f', 'b', 'c']

更多数组方法、待更新…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UiNMX_唐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值