发表于: 2020-02-22 20:38:42

2 1525


编辑日报内容...

方案一
/*
* 方案一:德路的方案
*   循环原有数组中的每一项,每拿到一项都往新数组中添加
*   添加之前验证新数组中是否存在这一项,不存在再增加
*/
let newAry = [];
for (let i = 0; i < ary.length; i++) {
// 循环获取原有数组中的每一项
let item = ary[i];
// 验证新数组中是否存在这一项
if (newAry.includes(item)) {
 // 存在这一项,不在增加到新数组中,继续下一轮循环即可
 continue;
}
// 新数组中不存在这一项,我们加入到新数组中即可
newAry.push(item);
}
console.log(newAry);
//简化代码
let newAry = [];
ary.forEach(item => {
if (newAry.includes(item)) return;
newAry.push(item);
});
console.log(newAry);

方案三

let ary = [1, 2, 3, 1, 2, 1, 2, 3, 2, 1, 2, 3];
// 1.创建一个空对象
let obj = {};
// 2.循环数组中的每一项,把每一项向对象中进行存储 => item:item
for (let i = 0; i < ary.length; i++) {
let item = ary[i];
// 3.每一次存储之前进行判断:验证obj中是否存在这一项
if (obj[item] !== undefined) {
 // 已经存在这一项
 ary.splice(i, 1);
 i--;
 continue;
}
obj[item] = item;
}
console.log(ary);
<p cid="n10" mdtype="paragraph" relative"="">基于splice实现删除性能不好:当前项被删后,后面每一项的索引都要向前提一位,如果后面内容过多,一定影响性能
/*
* unique:实现数组去重的方法
*  @params
*     ary [Array] 要去重的数组
*  @return
*     [Array] 去重后的数组
* by zhouxiaotian on 20190724  
*/
function unique(ary) {
let obj = {};
for (let i = 0; i < ary.length; i++) {
 let item = ary[i];
 if (obj[item] !== undefined) {
  ary[i] = ary[ary.length - 1];
  ary.length--;
  i--;
  continue;
 }
 obj[item] = item;
}
return ary;
}
let aa = [12, 23, 12, 15, 25, 23, 25, 14, 16];
aa = unique(aa);
aa.sort((a, b) => a - b);
console.log(aa); //=>[12, 14, 15, 16, 23, 25]



返回列表 返回列表
评论

    分享到