javascript - 理解 indexOf 和 lastIndexOf

标签 javascript arrays filter indexof lastindexof

我正在做一些 JavaScript 练习,我偶然发现了这个“编写一个 JavaScript 程序来过滤掉数组中的非唯一值。”

我尝试并找到了一个解决方案,该解决方案有效但过于麻烦。根据该网站,更好的答案如下:

const filter_Non_Unique = arr =>
  arr.filter(l => arr.indexOf(l) === arr.lastIndexOf(l));

console.log(filter_Non_Unique([1,2,3,4,4,5,6,6])) // 1,2,3,5

现在我绞尽脑汁试图理解为什么这个解决方案有效,但我还是不明白。 有人可以向我解释吗? 提前致谢。

最佳答案

如果元素在数组中只出现一次,第一个索引将与最后一个索引相同,两次调用的索引都不会改变。

例如:

const arr = [1,2,3,4,4,5,6,6]

console.log(arr.indexOf(5))
console.log(arr.lastIndexOf(5))

由于这两个函数返回相同的索引,过滤器将保留元素。

另一方面,如果有多个值,这些值将具有不同的索引,因此过滤器将返回 false,并将其从数组中删除:

const arr = [1,2,3,4,4,5,6,6]

console.log(arr.indexOf(4))
console.log(arr.lastIndexOf(4))

我已经回答了一个与您解决的问题相似的问题 here ,你也可以试试这个逻辑。

关于javascript - 理解 indexOf 和 lastIndexOf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59192722/

相关文章:

javascript - MongoDB 和 Node.js - 将整个模型推送到 ref 数组与推送 id 之间的区别

javascript - 如何获取 javascript 对象的主要属性?

python - python 中的低通滤波器

java - GWT 按键过滤器

javascript - 获取 UTC 时间给我 NaN

javascript - 使用 ES6 类将实例方法传递给 super

java - 如何在Java中制作动态二维数组?

mysql - 可过滤属性未显示在过滤器中

javascript - vue 将图片转换为base64

javascript - HttpDelete 和参数