众所周知,new Set()方式不可以去重空对象空数组以及包装类函数(可以理解为构造函数),那么在new Set()的方法上进行封装 可不可以呢 太麻烦,而for循环两次比较去重也麻烦 在这里 小曹推荐大家使用对象key不能重复的原理 实现数组去重 上代码:
用对象的key不能重复的原理给数组去重实现
转载 // 封装数组去重 把数组的值放到对象里面的key 利用key不能重复的原理去重最不会出错
var array = [1, 2, 1, 2, {}, {}, undefined, undefined, null, null, new Array(), new Number(), new Number(), new Array(), [], []]
Array.prototype.unique = function () {
var obj = {}
var arr = []
var len = this.length;
for (var i = 0; i < len; i++) {
if (!obj[this[i]]) {
obj[this[i]] = 'abc'
arr.push(this[i])
}
}
return arr
}
本来一开始想用type判断一下传进来的是不是数组作相应的提示 后来发现不需要 直接在Array的原型链上面编程就好了 哈哈原型链真好用 这样就只有数组才有该方法
关键在于取数组值之后,判断这个空对象里面如果没有值 给这个对象的key为数组元素赋值对应的value---“abc”(最好string类型 不然判断取反可能会像0有隐式转换为false)
这样 一路for循环遍历下去 obj的key是不会被重复命名的,所以遇到相同的也就跳过啦 这样就实现了去重,应付一切数组。 原理简单点就是obj.name = 'abc'后,obj.name再出现一次,就不会进入if循环 就不会push到新的数组里面被去重函数返回.
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:OS L5-3: Contiguous Scheme and Fragmentation
下一篇:[LeetCode] 1080. Insufficient Nodes in Root to Leaf Paths
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java8处理对象List集合之间的交集、并集、差集和去重
Java8处理对象List集合之间的交集、并集、差集和去重
交集 并集 去重 Stream 差集 -
几行Python代码,轻松搞定Excel表格数据去重
用几行Python代码,轻松搞定Excel表格数据去重
数据 原始数据 数据处理 Python处理数据 -
java 数组对象 去重复 java实现数组去重
这道题和第 1081 题「不同字符的最小子序列」的解法是完全相同的,你可以把这道题的解法代码直接粘过去把 1081 题也干掉。题目的要求总结出来有三点:要求一、要去重。要求二、去重字符串中的字符顺序不能打乱s中字符出现的相对顺序。要求三、在所有符合上一条要求的去重字符串中,字典序最小的作为最终结果。上述三条要求中,要求三可能有点难理解,举个例子。比如说输入字符串s = "babc",去重且符
java 数组对象 去重复 java数组去重 labuladong的算法小抄pdf 如何去除一个数组中的子元素中的双引号 字符串相邻元素去重 -
springboot 常见的内存泄漏
文章目录1、服务监控的实现思路2、SpringBoot Admin服务端3、SpringBoot Admin客户端4、实现原理--Actuator与端点5、关于端点 1、服务监控的实现思路监控的意义:监控服务状态是否宕机监控服务运行指标:内存、虚拟机、线程、请求等监控日志管理服务:服务下线与启动当要监控的服务很多时,一个个去查看很不方便,因此考虑引入一个显示所有服务监控信息的服务。这个服务如果只
springboot 常见的内存泄漏 spring boot 后端 java SpringBootAdmin