这个用于从数组中删除重复项的代码片段是如何工作的
How does this snippet for removing duplicates from an array work
关于从另一个数组中创建一个新的唯一值数组的帖子(从JavaScript数组中删除重复项)
问题代码:
uniqueArray = myArray.filter(function(elem, pos) {
return myArray.indexOf(elem) == pos;
})
使用这个作为测试数据:
var names = ["Mike","Matt","Nancy","Adam","Jenny","Nancy","Carl"];
期望的结果是一个只有唯一值的数组:
var unique_names = ["Mike","Matt","Nancy","Adam","Jenny","Carl"];
Where I'm at:
我理解过滤器将对数组的每个成员运行一个函数,其中的elem是要检查的元素,而pos是它的索引。如果某些原因导致该函数返回false,则该元素将不包含在新数组中。浏览一下,会出现这样的情况:
- myArray.indexOf("Mike")是否等于0?是的,所以将"Mike"添加到新的数组中。
- myArray.indexOf("Matt")与1相同吗?是的,所以将"Matt"添加到新的数组中。
- myArray.indexOf("Nancy")是否与2相同?是的,所以将"Nancy"添加到新的数组中。
[对所有元素重复。所有通过。)
基本上我不明白为什么第二个南希会计算为false。
indexof是元素第一个外观的索引,因此第二个Nancy将获得第一个Nancy的索引,并将被过滤掉。
6) myArray.indexOf("Nancy")与5相同吗?不(它是2,就像第三步一样),所以跳过重复的"Nancy"。
indexOf
给出该项的第一个出现。
相关文章:
- 我的html表单无法验证.请参阅代码片段中的html代码和java脚本
- 将代码片段转换为 HTML 页面
- 以下代码片段是命名空间还是闭包
- I'我试图在网页中添加一个javascript小片段,但它只是在页面上显示代码
- 对以下代码片段中“this”值更改的说明
- fadeIn, fadeOut jQuery 代码片段
- 如何更好地编写以下Javascript代码片段
- ace编辑器查找代码片段
- 如何优化此JavaScript代码片段
- 被这个JavaScript代码片段弄糊涂了
- 以下 Chrome 扩展程序 JavaScript 代码片段究竟是如何工作的
- 跳过爬虫的 JavaScript 代码片段
- 将代码片段插件添加到 Rails 应用程序中的 CKEditor
- Nodejs 可选正则表达式命名组的插件或代码片段
- 我怎样才能异步执行 JavaScript 代码片段并等待它们的结果
- 如何使用下面的代码片段获得不同的值
- 在 JavaScript 中将代码片段转换为方法
- 代码片段,使用jquery,我什至需要javascript吗?
- 如何简明扼要地遵循 jquery 代码片段
- 翻译PHP片段代码到.net