[JS算法题]数组去重和字符串去重

数组去重

法一 利用ES6 Set去重

function unique (arr) {
  if (!Array.isArray(arr)) {
      console.log('type error!')
  }
  return [...new Set(arr)]
}
function unique (arr) {
  if (!Array.isArray(arr)) {
      console.log('type error!')
  }
  return Array.from(new Set(arr))
}

法二 ES5 filter+indexOf

function unique(array) {
    var res = array.filter(function(item, index, array){
        return array.indexOf(item) === index;
    })
    return res;
}

法三 兼容性好的双重for循环

function unique(arr){            
        for(var i=0; i<arr.length; i++){
            for(var j=i+1; j<arr.length; j++){
                if(arr[i]==arr[j]){
                    arr.splice(j,1);
                    j--;
                }
            }
        }
    return arr;
}

字符串去除相邻重复项

输入: 'aabbbccdeeaa'

输出: 'abcdea'

法一 数组

function unique(str){
  let arr = str.split('');
  let newArr = [arr[0]];
  for(let i=0; i<arr.length; i++){
    let cur = arr[i];
    if(cur !== newArr[newArr.length-1]){
      newArr.push(cur);
    }
  }
  return newArr.join('');
}

法二 正则表达式

function unique(str){
  return str.replace(/(.)(?=\1)/g, '');
}

(?=)预搜索,指明某个字符的右侧是什么,但不包含这部分,只匹配这个‘某个字符’

a(?=b) affgfgabd 匹配加粗的a

(.)加上()就是将匹配的该字符存储起来供以后引用,\1就是取存储的第一个

全部评论

相关推荐

暴杀流调参工作者:春招又试了一些岗位,现在投递很有意思,不仅要精心准备简历,投递官网还得把自己写的东西一条一条复制上去,阿里更是各个bu都有自己的官网,重复操作无数次,投完简历卡完学历了,又该写性格测评、能力测评,写完了又要写专业笔试,最近还有些公司搞了AI辅助编程笔试,有些还有AI面试,对着机器人话也听不明白录屏硬说,终于到了人工面试又要一二三四面,小组成员面主管面部门主管面hr面,次次都没出错机会,稍有不慎就是挂。 卡学历卡项目卡论文卡实习什么都卡,没有不卡的😂
点赞 评论 收藏
分享
03-27 01:58
已编辑
西北工业大学 Java
在平静中度过当下:如果这个bg也简历挂的话可能他们现在不缺人了吧,我也是这两天投的,阿里和快手投的岗都是简历秒挂
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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