数组去重
2021-05-28 08:03
标签:log fine 键值 索引 地方 json 原因 col 判断 数组去重不仅在工作中经常使用,也会在面试中经常问到,现在有几种常用的方法: 比如要将数组去重: 方法一: 直接通过indexOf 或者 includes进行判断是否存在,不存在则直接push到新数组中。 如果数组中存在NaN的话,使用includes,因为indexOf判断不了NaN。 方法二: 方法三: 筛选中如果存在{},{a:1}此时进行去重,需要使用findIndex:查询数组是否包含某元素,如果存在返回元素的索引,否则返回-1。 它比indexOf更加先进的地方在于能传入 为什么要使用 JSON.stringify 来进行对比,是因为{} === {} 为false,这是因为对象堆栈的原因。 参考:https://my.oschina.net/u/4188011/blog/4278961 数组去重 标签:log fine 键值 索引 地方 json 原因 col 判断 原文地址:https://www.cnblogs.com/liumcb/p/14786020.htmlconst arr = [1, 2, 3, "1", 2, undefined, undefined, "undefined", NaN, NaN];
let newArr1 = [];
arr.map((item) => {
if (newArr1.indexOf(item) === -1) {
newArr1.push(item);
}
});
console.log("newArr1===", newArr1); // [1, 2, 3, "1", undefined, "undefined", NaN]
let temp1 = {};
arr.map((item, i) => {
if (temp1[item] === undefined) {
temp1[item] = i;
}
});
console.log(temp1); // {1: 0, 2: 1, 3: 2, undefined: 5, NaN: 8}
const newArr3 = Object.keys(temp1); // [1, 2, 3, "1", undefined, "undefined", NaN]callback
,按约定方式查询。const arr1 = [1, 2, 3, ‘1‘, 2, undefined, undefined, ‘undefined‘, NaN, NaN, {}, {}, {a: 1}, {a: 1}];
let tmp = [];
arr1.map((item,i) => {
if(tmp.findIndex(v => JSON.stringify(v) === JSON.stringify(item)) === -1){
tmp.push(item);
}
});
console.log(tmp); // [1, 2, 3, "1", undefined, "undefined", NaN, {}, {a:1}]
下一篇:Java原子操作保证方案