我需要这个JS回调函数的帮助。我试图弄清楚回调在JS中是如何工作的。
- 快速测试代码如下:
function debFilter(deb_array, fillCb){
var filt_darr = [];
for (var inx in deb_array) {
filt_darr.push(fillCb(deb_array[inx]));
}
return filt_darr;
}
console.log(debFilter(savedInp, function(x) { if (x%2 == 0) { return x;}} ));
让我们说我的savedInp数组包含[2,3,4,5,6,7,8,9]这样的东西。如何确保我的回调只返回偶数元素而不是奇数元素?所以我的filt_darr将是[2,4,6 ......等]。 使用上面的测试代码我得到[2,未定义,4,未定义,等等]。我也尝试过其他类似的条件而无济于事。我只需要知道如何告诉JS不要推送/返回'我不需要的东西。对不起,如果这是初学者Q. 谢谢你的帮助。
答案 0 :(得分:0)
迭代数组,然后将evens推入一个新数组:
var a = [1,2,3,4,5];
function getEvens(originalArray){
var evens = [];
for(var i = 0; i < originalArray.length; ++i){
if(originalArray[i] % 2 === 0){
evens.push(originalArray[i]);
}
}
return evens;
}
答案 1 :(得分:0)
您可能已经注意到,您正在将每个返回值收集到结果数组中,并且对于每个奇数,您的回调都会返回RATE: 3.00%
SPEED: 280
TOT. WT: 52172.6
ERROR: +0.0 (10)
AVG: 3.07
DEVIATION: 6.10
。
您可以将代码更改为......
undefined
顺便说一下,ES 5支持Array.prototype.filter,这可能就是你要找的东西。还有一个polyfill,你可以从中获得灵感。