日期:2014-05-16  浏览次数:20357 次

JS数组使用迭代函数注意点

?

JS的数组定义了如下几个迭代函数

some(),every(),forEach(),filter();map();

?

以下是随机获取双色球

function getRandomBall(){

? ? var redBalls=[];redBalls.length=6;

? ? redBalls.forEach(function (item,index,arr){

? ? ? ? arr[index]=getRandomInt(32);

? ? })

? ?var blueBall=getRandomInt(16);

? ?redBalls.push(blueBall);return redBalls;

}

?

function getRandomInt(max){

? max++;

? while(true){?

? ?var rdm = parseInt(Math.random()*100);

? ?if(rdm<max && rdm !=0) return rdm;

? }

}

?

console.info(getRandomBall());

结果却不是想要的结果,

返回的是[undefined,undefined,undefined,undefined,undefined,undefined,22]

原因:arr[index]=getRandomInt(32);压根就没执行

?

?

修改:var redBalls=[];redBalls.length=6; 为:var redBalls=[undefined,null,'',NaN,false,0];

结果OK,?

结论:使用JS数组随机函数需要注意,如果数组元素没有显式初始化.该元素不会执行迭代函数的参数