我有一个值数组(1,2,3)和一个结果数组(y,n,y)。我想根据结果过滤值。为此,我使用了arr.filter功能,如下所示,我将arr作为上下文传递:
var arr = ["1","2","3"];
var res = ["y","n","y"];
var rarr = res.filter(function(item,index){
if (item==='y') {
fRes.push(this[index]);
};
return (item==='y');
},arr);
console.log(fRes);
console.log(rarr);
根据我在MDN中看到的数组过滤文档,我很惊讶rarr与fRes没有相同的值(这是我正在寻找的)。我的理解是测试是在res中的值,如果成功,则从上下文(这里是arr)中选择相应的项。这似乎不是这样的(因此我有这个推动构建我正在寻找的结果表)?谢谢 - 基督徒
答案 0 :(得分:3)
您可以使用index
,它是过滤器中的第二个参数,用于过滤掉arr,其中res中具有相同索引的元素为y
。
var arr = ["1","2","3"];
var res = ["y","n","y"];
var result = arr.filter(function(e, i) {
return res[i] == 'y'
})
console.log(result)