的数组,我已经找到了解决办法这里由OhJeez:How to get an array of unique values from an array containing duplicates in JavaScript?JS返回由独特的阵列
array.filter(function() {
var seen = {};
return function(element, index, array) {
return !(element in seen) && (seen[element] = 1);
};
}());
我想问的是如何使代码的意义之上。我不明白的部分是,var如何保持它的关键。每次迭代都不会重置为空的散列/对象吗?
编辑:我想我理解闭包是如何工作的,这并不能解决我的问题。就我的理解,Array.prototype.filter将数组的每个元素都循环到回调函数中,在这种情况下,匿名函数'var seen = {};返回函数(元素,索引,数组){return!(元素见)& &(看过[元素] = 1);} ;.这反过来又返回里面的功能。
我的问题再一次是不应该每个迭代运行'var seen = {}'这一行?那么如何看待它的元素呢?
可能重复[JavaScript关闭如何工作?](https://stackoverflow.com/questions/111102/how-do-javascript-closures-work) – Andreas
[什么是(函数(){})( )构造在JavaScript?](https://stackoverflow.com/questions/8228281/what-is-the-function-construct-in-javascript) – Andreas