javascript-否则不会产生预期的比较结果

时间:2018-09-03 20:46:31

标签: javascript arrays

我是javascript新手。我这里有一个小问题。
javascript if / else语句是否与其他语言(c ++,java,python)不同?

这是我遇到的问题。

  • if else语句仅接受i == 0i == 1从myArray进入我的新数组。

为什么我不能将其他元素分离到新数组中?我以myArray为例。在我真正的问题中,我不知道有多少元素。这就是为什么我设置了变量threetimesincreaseByThree的原因。我只是想通过使用for循环将名称,邮政编码和金额分成不同的数组。

var nameArray = [], zipCodeArray = [], totalAmountArray = [];
var threeTimes = 3;
var increaseByThree = 0;
var myArray = ["Eric ", "94990", "540", "Sam ", "303030", "350"];

for(var i = 0; i < myArray.length; i++) {
  threeTimes += 3;
  increaseByThree += 3;

  if(i == threeTimes || i == 0) {
    nameArray.push(myArray[i]);
  } else if(i == increaseByThree || i == 1) {
    zipCodeArray.push(myArray[i]);
  } else {
    totalAmountArray.push(myArray[i]);
  }
}
console.log(nameArray) 
console.log(zipCodeArray) 
console.log(totalAmountArray)

1 个答案:

答案 0 :(得分:1)

假定您的数组将采用[a0,b0,c0,.....,aN,bN,cN]格式,其中N是“条目”的数量-1;您可以通过以下方式简化确定值的逻辑:

const myArray = ["Eric ", "94990", "540", "Sam ", "303030", "350"];
const nameArray = [], zipCodeArray = [], totalAmountArray = [];

for(var i = 0; i < myArray.length; i++) {
    switch (i % 3) {
        case 0:
            nameArray.push(myArray[i]);
            break;
        case 1:
            zipCodeArray.push(myArray[i]);
            break;
        case 2:
            totalAmountArray.push(myArray[i]);
            break;
    }
}

console.log(nameArray) 
console.log(zipCodeArray) 
console.log(totalAmountArray)

这将适用于任何大小的数组,并消除了不必要的变量和if-else块的需要。这是有关javascript开关块的有用链接 (https://www.w3schools.com/js/js_switch.asp),它比if-else块要干净得多,在这种情况下可以更清楚地表明其意图。