题解 | #查找重复元素#

查找重复元素

https://www.nowcoder.com/practice/871a468deecf453589ea261835d6b78b

思路:使用myset记录数组中元素,使用res记录数组中重复的元素。遍历arr,如果myset中存在当前元素,则表示该元素重复,故将该元素加入res,反之则将该元素加入myset,最后返回res即可。

function duplicates(arr) 
{
    let myset=new Set()
    let res=new Set()
    for(let val of arr)
    {
        if(myset.has(val))
            res.add(val)
        else
            myset.add(val)
    }
    return [...res]
}

总结:set.has(x)判断set中是否包含x;set.add(x)将x加入set。

扩展:使用res表示重复元素,使用forEach遍历数组arr,使用indexOf和lastIndexOf判断数组arr中是否存在至少两次元素,使用indexOf判断数组res中是否不存在该元素,当这两者均满足时,则将元素加入res。

function duplicates(arr) 
{
    let res=[]
    arr.forEach(x=>{
        if(arr.indexOf(x)!=arr.lastIndexOf(x)&&res.indexOf(x)==-1)
            res.push(x)
    })
    return res
}

总结:indexOf方法返回指定元素在数组中首次出现的索引位置。如果数组中不存在该元素,则返回 -1;lastIndexOf方法返回指定元素在数组中最后一次出现的索引位置。如果数组中不存在该元素,则返回 -1。

#查找重复元素#
前端js面试 文章被收录于专栏

前端js面试,帮助你更好的理解js。

全部评论

相关推荐

06-23 11:43
门头沟学院 Java
allin校招的烤冷...:我靠,今天中午我也是这个hr隔一个星期发消息给我。问的问题还是一模一样的😅
点赞 评论 收藏
分享
Lorn的意义:你这标个前端是想找全栈吗?而且项目确实没什么含金量,技术栈太少了,边沉淀边找吧 现在学院本想就业好一点四年至少得高三模式两年加油吧
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务