我只能返回1个阵列

时间:2016-05-29 20:08:51

标签: javascript arrays

我正在尝试使用此数组并将其拆分为2个新数组,均衡和赔率并返回它们。当我运行下面的代码时,我只是得到了赔率,为什么会这样?我能做些什么来解决它?

提前致谢。

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

function divider( arr ) {
  var evens = [];
  var odds = [];
  for (var i = 0; i < arr.length; i++) {
    if (arr[i] % 2 === 0) {
      evens.push(arr[i]);
    } else {
      odds.push(arr[i]);
    }
  }
  return(evens, odds);
}

divider(numbersArray);

7 个答案:

答案 0 :(得分:11)

因为JavaScript只能返回一个值。如初。

return(evens, odds)

评估与

相同的值
return odds

由于comma operator包含在分组括号中。

也许返回一个数组数组(甚至数组的对象)很有用..

return [evens, odds]

答案 1 :(得分:2)

评估(evens, odds)的结果是odds,因此会返回 这就是comma operator的工作原理。

请改用以下语句:

return { 'evens': evens, 'odds': odds };

举个例子:

var v = divider(numberArrays);
v.evens; // get evens this way
v.odds; // get odds this way

答案 2 :(得分:2)

您应该将结果作为数组返回。

return [evens, odds];

然后访问结果:

var evens;
var odds;

var arrayResults = divider(numbersArray);
evens = arrayResults[0];
odds = arrayResults[1];
console.log(evens);
console.log(odds);

答案 3 :(得分:2)

在Javascript中,您只能返回一个值。因此,如果要返回多个值,要将它们分开,可以将它们放在数组或对象中:

 return([evens, odds]);

OR

return({evens: evens, odds: odds})

答案 4 :(得分:1)

您只能从函数返回一个实体。最好将结果包装在单个对象中。

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

    function divider( arr ) {
      var evens = [];
      var odds = [];
      for (var i = 0; i < arr.length; i++) {
        if (arr[i] % 2 === 0) {
          evens.push(arr[i]);
        } else {
          odds.push(arr[i]);
        }
      }
      return {evens:evens, odds:odds};
    }

    divider(numbersArray);

答案 5 :(得分:1)

Es5不支持元组,你应该包回你的

在像这样的对象中

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

    function divider( arr ) {
      var evens = [];
      var odds = [];
      for (var i = 0; i < arr.length; i++) {
        if (arr[i] % 2 === 0) {
          evens.push(arr[i]);
        } else {
          odds.push(arr[i]);
        }
      }
      return {evens:evens, 
    odds:odds};
    }

   divider(numbersArray);

或者在其他aswers显示的数组中

答案 6 :(得分:1)

您可以返回一个对象,如下所示:

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

function divider( arr ) {
    var evens = [];
    var odds = [];
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] % 2 === 0) {
            evens.push(arr[i]);
        } else {
            odds.push(arr[i]);
        }
    }
    return {evens, odds};
}

divider(numbersArray);