JS算法:去重--基本解法

简介

去重是一个比较常见的算法,简而言之就是把一个集合中重复的项目去掉只保留不重复的。下面是一个JS最简单的处理。后续2-4没给答案原理差不多,大家试一下吧。

基本算法

遍历目标数组,把目标数组中的元素放入新的数组中,放入前检查是否已经存在,如果已经存在则不再放入。

基础函数

  1. 数组去重
    例如:[1,4,6,7,9,6,4,5]去重后的结果为:[1,4,6,7,9,5]
    代码:
function uniqueArray(arr){
  // 存放结果
  var res = [];
  for(var i in arr){// 遍历数组元素
    if(res.indexOf(arr[i]) == -1){// 如果结果数组不存在该元素则保存
       res.push(arr[i]);
    }
  }
  // 返回去重后的数组
  return res;
}
// 测试
uniqueArray([1,4,6,7,9,6,4,5]);

注意:indexOf是ES5新增加函数,用来获取数组中元素的位置(下标),兼容性IE8+

  1. 字符串去重
    例如:"14679645"去重后的结果为:"146795"
    代码:
function uniqueString(str){
  // 存放结果
  var res = "";
  for(var i in str){// 遍历字符串元素
    if(res.indexOf(str.charAt(i)) == -1){// 如果结果不存在该元素则保存
       res+=str.charAt(i);
    }
  }
  // 返回去重后的字符串
  return res;
}
// 测试
uniqueString("14679645");

发现没有,与数字去重长的差不多。
可以把字符串转化成数组,然后去重,再把结果数组转换成字符串。(这里使用了上面那个数组去重的函数uniqueArray)

// 字符串转换成数组
function uniqueString(str){
  // 把字符串转换成数组
  var arr = str.slice("");
  // 数组去重
  var res = uniqueArray(arr);
  // 把数组转换成字符串
  return res.join("");
}
uniqueString("14679645");
  1. 数字去重
    例如:14679645去重后的结果为:146795
    延续上面的思路就比较简单了,先把数字转换成字符串,再做处理。
    代码:
function uniqueNumber(num){
  // 把数字转换成字符串
  var str = num + "";
  // 字符串去重 
  var res = uniqueString(str);
  // 把字符串转换成数字
  return parseInt(res);
}
// 测试
uniqueNumber(14679645);
  1. 对象数组去重
    例如:
[
    {
      name:"张三",
      age:18
    },
    {
      name:"李四",
      age:17
    },
   {
      name:"张三",
      age:18
    },
  {
      name:"王五",
      age:18
    }
]

去重后的结果为:

[
    {
      name:"张三",
      age:18
    },
   {
      name:"李四",
      age:17
    },
  {
      name:"王五",
      age:18
    }
]

代码:略

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 3,865评论 0 6
  • JS基础讲解 JavaScript组成ECMAScript:解释器、翻译DOM:Document Object M...
    FConfidence阅读 580评论 0 1
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,270评论 0 4
  • 我说着自己无法长大 却已然有了独当一面的成熟。 ...
    WWJ爱谁谁阅读 284评论 0 0
  • 成功日志-记录三五件有收获的事务 1.感恩娘今天又站立起来了,娘最硬气了。今天娘跟爸爸一起做的饭饭,我又吃了一次神...
    lijutong_010阅读 245评论 0 0