去重和字符串方法

一、遍历数组法

这种方法是最简单的一种。
它是先创建一个新的数组,然后遍历要去重的数组当这个值不在这个数组的时候(indexOf为-1),就加入到这个新的数组中
例如:

 var arr = [1, 1, 2, 2, 3, 3, 4, 4, 5, 7, 7, 7, 7];

    var brr = [];    //新建一个数组
    for (let i = 0; i < arr.length; i++) {    //遍历要去重的数组
      if (brr.indexOf(arr[i]) == -1) {   //判断这个新的数组中是否有这个数,如果没有push进新数组
        brr.push(arr[i]);
      }
    }
    console.log(brr);

二、利用splice直接在原数组进行操作

这种方法是第一种的进阶法,
他用双重循环,遍历自身,第一层循环是从0到arr.length,第二层循环是i+1到arr.length,如果有重复的就删除,因为每删除一次,后面的数会填补前一个的,但是,在他不会在被循环到,所以每一次要j--一次,确保没有重复的

var arr = [1, 1, 2, 2, 3, 3, 4, 4, 5, 7, 7, 7, 7];
for (let i = 0; i < arr.length; i++) {
    for (let j = i + 1; j < arr.length; j++) {
      if (arr[i] === arr[j]) {
        arr.splice(j, 1);
        j--;
      }
    }
  }
  console.log(arr);

三、es6实现去重

这种方法是es6,提供的了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

  var arr = [1, 1, 2, 2, 3, 3, 4, 4, 5, 7, 7, 7];
  console.log(new Set(arr));

四、includes方法

includes() 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。
这种方法和第一种差不多,都是新建一个数组,不过判断方式不一样。

 var arr = [1, 1, 2, 2, 3, 3, 4, 4, 5, 7, 7, 7, 7];
  var crr = [];
  for (let i = 0; i < arr.length; i++) {
    if (!crr.includes(arr[i])) {
      crr.push(arr[i]);
    }
  }
  console.log(crr);

五、排序后相邻去除法

这种方法是先 给传入数组排序,排序后相同值相邻,然后遍历时,新数组只加入不与前一值重复的值。但是缺点是会打乱原来数组的顺序

 var arr = [1, 1, 7, 7, 6, 5, 2, 2, 3, 3, 4, 4, 5, 7, 7, 7, 7]
 arr.sort();
  console.log(arr);  //[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 7, 7, 7, 7]
  var temp = [arr[0]];
  for (var i = 1; i < arr.length; i++) {
    if (arr[i] !== temp[temp.length - 1]) {   
      temp.push(arr[i]);
    }
  }
  console.log(temp);

判断字符串中出现次数最多的字符,和次数

 function findMore(str) {
    //   将字符串"按每个字符"分割成数组
    let arr = str.split("");
    let obj = {}; //定义一个对象
    //遍历数组
    arr.forEach((v) => {
      if (obj[v]) {
        //判断这个对象中是否存在这对象,
        obj[v]++; //如果存在,则加加
      } else {
        obj[v] = 1; //如果不存在,加入,并赋值为1
      }
    });

    // 定义两个变量,一个是出现最多的字符,一个是出现了多少次
    let num,
      max = 0;
    //对象循环方法 for in
    for (let i in obj) {
      if (obj[i] > max) {
        max = obj[i];
        num = i;
      }
    }
    return `出现次数最多的字符是:${num},共出现了${max}次`;
  }
  var str = "hdjkldksdjfklslasdhaaaasd";
  console.log(findMore(str));
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容