【发布时间】:2017-08-26 07:20:48
【问题描述】:
我已经通过 OhJeez 在这里找到了解决方案:How to get an array of unique values from an array containing duplicates in JavaScript?
array.filter(function() {
var seen = {};
return function(element, index, array) {
return !(element in seen) && (seen[element] = 1);
};
}());
我想问的是如何理解上面的代码。我不明白的部分是 var seen 如何保留其密钥。每次迭代不会重置为空的哈希/对象吗?
编辑:我想我了解闭包的工作原理,但这并不能解决我的问题。据我了解, Array.prototype.filter 将数组的每个元素循环到回调函数,在本例中为匿名函数 'var seen = {}; return function(element, index, array) {return !(element in seen) && (seen[element] = 1);};.这反过来又返回里面的函数。
我的问题是,不应该每次迭代都运行“var seen = {}”这一行吗?那怎么能看到保留它的元素呢?
【问题讨论】:
标签: javascript arrays filter