sYMMetrY 发表于 2020-9-14 17:14:28

关于JS中数组筛除重复元素的判定语法问题

本帖最后由 sYMMetrY 于 2020-9-14 17:14 编辑

这两个数组只是把标红的两个元素换一下位置就会将错误的结果纠正过来,这是什么原因导致的呢?只能猜测是判断语句那里出了问题,但是不知道是不是,也不知道为什么?请大家多多指教



kogawananari 发表于 2020-9-14 17:29:00

17行改成 if(arrNew.indexOf(element)!==-1)

kogawananari 发表于 2020-9-14 17:30:53

本帖最后由 kogawananari 于 2020-9-15 00:41 编辑

JavaScript的 in关键字 判断的是key in object(包括object.prototype)
而你想判断的是 value 在不在 array里还是得用 .indexOf方法才行
由于会遍历查找prototype的原因导致in的性能浪费
所以不要用这个in关键字

kogawananari 发表于 2020-9-14 17:41:06

写个最简单的去除 (Set除外)
let arr =
let arrnew = arr.reduce((a,v)=>((a.indexOf(v)==-1)&&a.push(v),a),[])
console.log(arrnew)

sYMMetrY 发表于 2020-9-14 21:45:43

kogawananari 发表于 2020-9-14 17:30
JavaScript的 in关键字 几乎是废掉的 参考【严格模式】

能否说的再详细一些?我看了严格模式和非严格模式,并没有那里能看出在这里in出了什么问题

kogawananari 发表于 2020-9-14 23:22:31

本帖最后由 kogawananari 于 2020-9-14 23:35 编辑

sYMMetrY 发表于 2020-9-14 21:45
能否说的再详细一些?我看了严格模式和非严格模式,并没有那里能看出在这里in出了什么问题

emmm 那可能是我记错了{:10_277:}
反正in别用哪怕是for in 也完全可以用for of代替

我再编辑一下草{:10_277:}

sYMMetrY 发表于 2020-9-15 21:18:57

kogawananari 发表于 2020-9-14 23:22
emmm 那可能是我记错了
反正in别用哪怕是for in 也完全可以用for of代替



{:10_248:}
页: [1]
查看完整版本: 关于JS中数组筛除重复元素的判定语法问题