我正在尝试探索thisArg
& filter
数组方法&只是试验thisArg
如何使用&从filter
返回。我有一个数组,在filter
方法内,我正在检查thisArg
中是否存在该值,如果没有,则推送值&最后从数组过滤器函数返回thisArg
。
在过滤器功能中,日志thisArg
将显示[1],[1,2],...
,但如果有重复的元素,则不会被推送。
在安慰从filter
返回时,重复的值仍然存在。
我无法理解thisArg
方法内外filter
值的差异。
thisArg
是可选值。在以下函数中
array.filter(function(item) {}, []) // this empty array is thisArg
var x = [1, 2, 3, 4, 1];
var m = x.filter(function(item) {
if (this.indexOf(item) === -1) {
this.push(item)
}
// it will console [1],[1,2],[1,2,3]....
// will never have repeated value
console.log("Before Final Return ", this);
return this; // returning this expecting it will not have repeated value
}, [])
// this will have [1,2,3,4,1]
console.log("Final Value ", m)

答案 0 :(得分:2)
filter
期望返回值为true或false。数组总是很简洁。看起来你的意思是:
var x = [1, 2, 3, 4, 1];
var m = [];
x.forEach(function (item) {
if (this.indexOf(item) === -1) {
this.push(item)
}
}, m);
console.log("Final Value ", m)