这是我作为这个问题的答案找到的代码: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/