Javascript forEach循环n次

时间:2015-09-15 15:34:07

标签: javascript loops foreach

我知道每个人的表现都不是很好,但我正在尝试使用它(只是一个学习练习)来循环一些事情(n)次。

我正在尝试这个,但我无法让它发挥作用:

var i = 0;
new Array(10).prototype.foreach.call( function(){ i++; } );

可以这样使用吗?我的代码出了什么问题?谢谢!

1 个答案:

答案 0 :(得分:3)

在内部,您可以将SELECT psd.type, count(*) as total FROM question_answer_nps qan JOIN question_answer qa ON qan.question_answer_id = qa.id JOIN post_sale_action psa ON psa.id = qa.post_sale_action_id JOIN post_sale_dispatch psd ON psd.id = psa.post_sale_dispatch_id JOIN post_sale_lot psl ON psl.id = psd.post_sale_lot_id WHERE qan.nps_answer is not null AND psd.status != 0 AND psa.status in (2, 3) AND psl.status != 0 GROUP BY psd.type 视为定义如下:

forEach

请注意,这只是一个基本的例子,它并不是正确的XD但是它对于我正在制作的这个点已经足够了。即,Array.prototype.forEach = function(cb) { for( var i=0, l=this.length; i<l; i++) { cb(this[i]); } }

通常,this是您正在处理的数组。但是通过this来电,.call()。函数this === function(){ i++; }是它接受的参数数量,在您的情况下为零,因此代码永远不会运行。即使它确实(例如length),函数中的代码也不会运行,因为它必须是function(x){ i++; }第二个参数(这将成为第一个参数) .call()

试试这个:

[].forEach.call(new Array(10), function() {i++;});

这将获取.forEach()方法,在上调用一个长度为10的数组,将该函数作为回调参数传递。

我在上面错了。 forEach无法按您希望的方式运行。你需要一些像new Array(10)这样的hackery来获得Array.apply(null, Array(10)).map(function () {})可以使用的数组。你最好只使用forEach