javascript - 如何在 JavaScript 中使用 indexOf 和 filter()

标签 javascript arrays indexof

这是我作为这个问题的答案找到的代码:Write a JavaScript program to remove duplicate items from an array (ignore casesensitive)。

var arr1=[3, 'a', 'a', 'a', 2, 3, 'a', 3, 'a', 2, 4, 9, 3, 'A'];

var uniqueArray = arr1.filter(function(elem,i,rep){
    return i == rep.indexOf(elem);
})
console.log(uniqueArray);

我知道 filter() 做了什么,并且 indexOf 用于查找元素第一次出现的索引,但我不明白这一行是如何:
i == rep.indexOf(elem);

仅将唯一元素引入 uniqueArray。

最佳答案

var arr1 = [3, 'a', 'a', 'a', 2, 3, 'a', 3, 'a', 2, 4, 9, 3, 'A'];

var uniqueArray = arr1.filter(function(elem,i,rep){
        return i == rep.indexOf(elem);
    });
    
console.log(uniqueArray);


这里 elem 将包含数组的每个元素, i 将是当前 elem 的索引, rep 将包含整个数组
现在 rep.indexOf(elem);总是会给出元素第一次出现的索引 Array.prototype.filter() 的工作方式是,如果你返回 true,它不会过滤它,但如果你返回 false,它会过滤掉它,所以除了每个元素第一次出现被过滤掉

关于javascript - 如何在 JavaScript 中使用 indexOf 和 filter(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45522616/

相关文章:

javascript - 如何使用 cordova 和 angularjs 在混合移动应用程序中上传 pdf 文件?

javascript - 如何从 jQuery 函数访问外部 this?

javascript - 在字符串定义中附加变量

c++ - 3D数组c++的动态初始化

node.js - 在 Node 中,如何删除以某些特定字符结尾的子字符串

javascript - 使用javascript正则表达式获取字符串中的最后一个数字

javascript - 获取数组中的第一项和最后一项 - JS

java - 使用 charAt(i) 从字符串创建一个整数数组会在每个索引中给出 2 位数字吗?

javascript - indexOf 不断返回 -1 Javascript

c# - 如何在不同的字符串中找到一个字符串的所有索引?