为每个循环提供Javascript帮助

时间:2015-02-05 15:41:07

标签: javascript for-loop foreach each

我正在尝试让我的程序生成一个用于游戏的4号码针。

我最初想要这样做:

function paswdGen() {
    var nums = [0, 0, 0, 0];
    for each (var x in nums) {
        x = Math.floor((Math.random() * 9) + 1);
    }
} 
document.getElementById("nums").innerHTML = nums;

如何在没有jQuery的情况下在javascript中使用“for each”循环?

4 个答案:

答案 0 :(得分:1)

您希望使用语言功能Array.prototype.forEach。在这里查看MDN的一些优秀文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

这是您的代码版本:

var nums = [0, 0, 0, 0];
nums.forEach(function(nums){
    x = Math.floor((Math.random() * 9) + 1);
})

答案 1 :(得分:1)

我认为Array.prototype.forEach可能不是您需要的,我建议您使用Array.prototype.map instead吗? (请注意,这适用于大多数浏览器和IE9 +)

// this function would return a string of 4 digits
function paswdGen() {
    var nums = [0, 0, 0, 0];

    return nums.map(function () {
        return Math.floor((Math.random() * 9) + 1);
    }).join('');
} 

答案 2 :(得分:0)

var code = '';

for (var i = 0; i < 4; i++) {

    code += Math.floor((Math.random() * 9) + 1);
}

console.log(code); // Outputs 1234 (for example)

如果您的目标是使用forEach:

var nums = [0, 0, 0, 0];
var code = '';

nums.forEach(function(){
    code += Math.floor((Math.random() * 9) + 1);
})

console.log(code); // Outputs 1234 (for example)

答案 3 :(得分:0)

无需手动创建阵列:

var length = 4;
var range = 10;

Array.apply(null, {length: length}).map(function() {
  return Math.floor((Math.random() * range) + 1);
});

另一种方式:

var length = 4;
var range = 10;
var transform = function(random) { return Math.floor(random * range) + 1 };
Array.apply(null, {length: length}).map(Math.random).map(transform)