对于循环推送到数组两次尽管modulo if语句

时间:2015-12-26 21:51:50

标签: javascript arrays object

我有一个用CSV填充大学数据的对象。我试图将数据从对象拉到另一个数组,以显示谷歌图表。

问题是在第一个模检查中它将数据推入数组两次。我不知道为什么在控制台检查中它只运行一次。

看看i%10 == 0

selectedStateArray = states[Object.keys(states)[selectedState]];
console.log(selectedStateArray);
collegeData = [];

for (var i = 0; i < selectedStateArray.length; i++) {

    if (i % 10 === 0) {
        collegeData.push(selectedStateArray[i]);
        console.log('i modulo 10: ' + selectedStateArray[i]);
    }

    if (year2010.classList.contains('active') && i % 8 === 0 || i % 9 === 0) {
        collegeData.push(selectedStateArray[i]);
    } else if (year2011.classList.contains('active') && i % 6 === 0 || i % 7 === 0) {
        collegeData.push(selectedStateArray[i]);
    } else if (year2012.classList.contains('active') && i % 4 === 0 || i % 5 === 0) {
        collegeData.push(selectedStateArray[i]);
        // console.log('i modulo 4 and 5: '+i);
    }

};

1 个答案:

答案 0 :(得分:1)

请为循环continue添加短路:

  

continue语句在当前或标记循环的当前迭代中终止语句的执行,并在下一次迭代时继续执行循环。

if (i % 10 === 0) {
    collegeData.push(selectedStateArray[i]);
    console.log('i modulo 10: ' + selectedStateArray[i]);
    continue; // <----------------------------------------- add this to prevent more push!
}