[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就是取存储的第一个

全部评论

相关推荐

点赞 评论 收藏
分享
Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务