【问题标题】:I need to write a function that loops through an array of numbers, and returns the odd & even numbers in it's array.我需要编写一个循环遍历数字数组的函数,并返回数组中的奇数和偶数。
【发布时间】:2018-02-07 04:48:04
【问题描述】:

我需要编写一个函数,循环遍历一个数字数组,并返回数组中的奇数和偶数。

我不确定是否有更好的方法来做到这一点,我被困住了。有没有办法同时返回两个语句?

var myNums = [1, 2, 3, 4, 5, 6, 7, 9];

var evens = []; 
var odds = [];  

function oddsAndEvens(nums) {
	for(var i = 0; i < nums.length; i++){
      if(nums[i] % 2 === 0){
        evens.push(nums[i])
      }
      else if (!nums[i] % 2 === 0) {
		odds.push(nums[i])
      }
    }  
      console.log(evens);
      console.log(odds);
    //I need it to "return" the array,
    //not console log
      
}
  
console.log(oddsAndEvens(myNums));

【问题讨论】:

标签: javascript arrays


【解决方案1】:

一个将偶数与赔率区分开来的简洁函数。

function arrangeNums(array) {
  let odd = array.filter(i=>i%2!==0);
  let even = array.filter(i=>i%2===0);
  return {even:even,odd:odd};
}
console.log(arrangeNums([...Array(100).keys()]));

【讨论】:

    【解决方案2】:

    当然可以,只需返回一个包含偶数和赔率的对象,

        function oddsAndEvens(nums) 
        {
          var evens = [];
          var odds = [];
          for(var i = 0; i < nums.length; i++){
              if(nums[i] % 2 === 0){
                evens.push(nums[i])
              }
              else if (!nums[i] % 2 === 0) {
        		    odds.push(nums[i])
              }
            }  
            return {"evens":evens,"odds":odds};   
        }
          
        var myNums = [1, 2, 3, 4, 5, 6, 7, 9];
        result = oddsAndEvens(myNums);
        console.log(result.evens);
        console.log(result.odds);

    【讨论】:

      【解决方案3】:

      您可以使用一个对象作为结果,并为对象的键获取一个数组来推送值。

      function getGrouped(array) {
          return array.reduce(function (r, a) {
              r[['even', 'odd'][a % 2]].push(a);
              return r;
          }, { odd: [], even: [] });
      }
      
      var myNums = [1, 2, 3, 4, 5, 6, 7, 9];
      
      console.log(getGrouped(myNums));
      .as-console-wrapper { max-height: 100% !important; top: 0; }

      【讨论】:

        【解决方案4】:

        返回数组而不是 console.log 应该可以工作

        var myNums = [1, 2, 3, 4, 5, 6, 7, 9];
        
        var evens = []; 
        var odds = [];  
        
        function oddsAndEvens(nums) {
        	for(var i = 0; i < nums.length; i++){
              if(nums[i] % 2 === 0){
                evens.push(nums[i])
              }
              else if (!nums[i] % 2 === 0) {
        		odds.push(nums[i])
              }
            }  
            
             // return array of values you want
             return [evens, odds] 
        }
          
        console.log(oddsAndEvens(myNums));

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-08-21
          • 2011-08-16
          • 2012-03-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-06-22
          相关资源
          最近更新 更多