JavaScript 如何使用回调
javascript how to use call backs
我需要这个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。感谢您的帮助。
迭代数组,然后将偶数推送到新数组中:
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;
}
您可能已经注意到,您将每个返回值收集到结果数组中,并且回调为每个奇数返回undefined
。您可以将代码更改为类似
function debFilter(deb_array, fillCb){
'use strict';
var filt_darr = [],
len = deb_array.length;
for (var i = 0; i < len; i++) {
if (fillCb(deb_array[i])) {
filt_darr.push(deb_array[i]);
}
}
return filt_darr;
}
顺便说一下,ES 5支持Array.prototype.filter,这可能是你正在寻找的。还有一个填充物,您可以从中获取一些灵感。
相关文章:
- 承诺在非节点式回调上使用Bluebird
- 如何在ajax回调中使用类变量
- Dojo 加载器不加载回调中使用的小部件依赖项
- 如何将async.waterfall与现有的回调一起使用
- 回调函数/使用.addClass添加类后运行函数
- es6 Javascript 类在回调中使用它
- 在回调中使用主干this.set时出现问题
- 确定回调是否使用所有参数
- 在 JavaScript / jQuery 回调中使用“this”更改单击元素的文本
- 在 AngularJS 和 Typescript 的回调中使用$http this
- 无需回调即可使用通知 API 的正确方法
- 无法在模块中执行回调,使用 Node-Cron导出对象
- 当无法定义回调时使用angularjs JSONP
- 在匿名回调中使用函数参数将返回 null/NaN
- RequireJS:在另一个“require”的回调中使用“require”不会从CDN加载
- 我可以在回调中使用已经使用的变量名称吗?
- Javascript回调在使用它时不触发
- 承诺链接:在next-then回调中使用上一个承诺的结果
- JSONP回调-当使用jQuery调用时,数据到达时未被捕获
- 角度组件语法,回调函数使用错误的上下文调用