【问题标题】:loop through array, returns odd and even numbers遍历数组,返回奇数和偶数
【发布时间】:2014-11-12 21:01:43
【问题描述】:

我正在自学代码并试图解决这个问题:

编写一个循环遍历nums,如果item是偶数,则将其添加到evens数组中,如果item是奇数,则将其添加到odds数组中。

这是我目前所拥有的:

var nums = [1,2,34,54,55,34,32,11,19,17,54,66,13];
var evens = [];
var odds = [];

var evenNumbers = function(nums) {
    for (var i = 0; i < nums.length; i++) {

        if ((nums[i] % 2) != 1) {
            evens.push(nums[i]);
                console.log(evens);
        }
        else {
            odds.push(nums[i]);
                console.log(odds);
        }
    }

};

alert(evens);
alert(odds);

他们不返回任何东西,我不确定我哪里出错了,非常感谢任何帮助。

【问题讨论】:

  • 你永远不会调用这个函数。

标签: javascript loops


【解决方案1】:

我建议使用 ES6 语法检查 array.prototype.filter 函数:

const oddNumbers = [1,2,34,54,55,34,32,11,19,17,54,66,13].filter((number) => number%2!==0);
console.log(oddNumbers);

如此优雅:)

【讨论】:

    【解决方案2】:

    您实际上并没有执行该功能。你需要调用 evenNumbers();

    var nums = [1,2,34,54,55,34,32,11,19,17,54,66,13];
    var evens = [];
    var odds = [];
    
    var evenNumbers = function(nums) {
        for (var i = 0; i < nums.length; i++) {
    
            if ((nums[i] % 2) != 1) {
                evens.push(nums[i]);
                    console.log(evens);
            }
            else {
                odds.push(nums[i]);
                    console.log(odds);
            }
        }
    
    };
    
    evenNumbers(nums);
    alert(evens);
    alert(odds);
    

    【讨论】:

    • 不,numsnums 在这种情况下是两个不同的东西。这会崩溃
    • 哦,是的,我会解决的。谢谢!
    • 仅供参考:(nums[i] % 2) != 1) 将在所有负奇数上失败。您必须 (nums[i] % 2) == 0) 处理所有可能的数字
    【解决方案3】:

    你实际上并没有调用你的函数,只是定义它。

    呼叫:

    evenNumbers(nums);
    

    在警告数组之前

    【讨论】:

    • OP现在好像是js的菜鸟,如果你把完整的代码贴出来让OP完全理解会更有帮助
    【解决方案4】:
    function groupNumbers(arr) {
    
      var arr = [1,2,3,4,5,6,7,8,9,10];
    
      var evenNumbers = arr.filter(number => number % 2 == 0);
    
      console.log("Even numbers " + evenNumbers);
    
      var oddNumbers = arr.filter(number => number % 2 !== 0);
    
      console.log("Odd numbers " + oddNumbers);
    }
    
    groupNumbers();
    

    【讨论】:

    【解决方案5】:
    var rsl = {even:[], odd:[]};
    
    [1,2,34,54,55,34,32,11,19,17,54,66,13].forEach(function(val,key,arr)
    {
        var wrd = (val % 2) ? 'odd' : 'even';
        rsl[wrd][rsl[wrd].length] = val;
    });
    
    console.log(rsl);
    

    【讨论】:

    • 在 JavaScript 中,“整数”被称为“数字”。如果要查看变量类型名称,例如使用: var foo = 123;控制台.log(类型 foo);希望它有所帮助;)
    【解决方案6】:
                //Even odd
                var arrays = [1,2,34,54,55,34,32,11,19,17,54,66,13];
                var result = arrays.filter((numbers)=>{
                     if(numbers%2!==0){
                       console.log(`${numbers} is not even`);
                     } else {
                         console.log(`${numbers} is even`);
                    }
                });
    

    【讨论】:

      【解决方案7】:

      这是一个 sn-p :

      const arr = [24,42,543,676,456,535,555];
      console.log("Values: "+arr);
      var even = arr.filter((number)=>number%2 === 0);
      console.log("Even Number: "+even);
      var odd = arr.filter((number)=>number % 2 !==0);
      console.log("Odd Number: "+odd);

      【讨论】:

        【解决方案8】:

        有人可以按照方式试试:

        function findOddEven(arr){
            let odd=[],even=[],i=0,j=0,k=0;
            for(i;i<arr.length;i++){
                if(arr[i]%2==0){
                  even[j++]=arr[i]
                }else{
                    odd[k++]=arr[i]
                }
            }
            console.log("Even and Odd number",even,odd)
        }
        
        findOddEven([2,13,4,26,17])
        

        【讨论】:

          猜你喜欢
          • 2013-04-13
          • 2021-09-24
          • 1970-01-01
          • 2018-02-07
          • 1970-01-01
          • 1970-01-01
          • 2015-09-20
          • 2017-01-30
          • 1970-01-01
          相关资源
          最近更新 更多