我正在尝试使用此数组并将其拆分为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);
答案 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);