Ahm*_*med 2 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,5Run Code Online (Sandbox Code Playgroud)
现在我想知道为什么这个解决方案有效,但我仍然不明白。有人可以向我解释一下吗?提前致谢。
如果元素在数组中仅出现一次,则第一个索引将与最后一个索引相同,两次调用的索引都不会更改。
例如:
const arr = [1,2,3,4,4,5,6,6]
console.log(arr.indexOf(5))
console.log(arr.lastIndexOf(5))Run Code Online (Sandbox Code Playgroud)
由于这两个函数都返回相同的索引,因此 filter 会将元素保留在其中。
另一方面,如果有多个值,这些值将具有不同的索引,因此过滤器将返回 false,并将其从数组中删除:
const arr = [1,2,3,4,4,5,6,6]
console.log(arr.indexOf(4))
console.log(arr.lastIndexOf(4))Run Code Online (Sandbox Code Playgroud)
我已经回答了一个类似于你在这里解决的问题,你也可以试试这个逻辑。
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |