在JavaScript ES6中使用if-else

Nes*_*esh 8 javascript ecmascript-6

我正在学习ES6,以下是我的ES5代码运行正常 -

var myArr = [34,45,67,34,2,67,1,5,90];
var evenArr = [];
var oddArr = [];

myArr.map(function(x){
  if(x%2==0) evenArr.push(x);
  else oddArr.push(x);
});
Run Code Online (Sandbox Code Playgroud)

现在,如果我将其转换为ES6,我会收到Unexpected token附近的错误if,让我知道我在这里做错了什么 -

我的ES6代码 -

var myArr = [34,45,67,34,2,67,1,5,90];
var evenArr = [];
var oddArr = [];
myArr.map( x => if(x%2==0) evenArr.push(x) else oddArr.push(x) )
Run Code Online (Sandbox Code Playgroud)

Lew*_*wis 9

您应该使用三元运算符来实现内联条件.

myArr.map( x => x%2==0 ? evenArr.push(x) : oddArr.push(x) )
Run Code Online (Sandbox Code Playgroud)


zer*_*kms 9

那是因为箭头函数在传递语句时接受表达式.

您的代码具有误导性:Array.prototype.map意味着您会以某种方式使用结果,而不是.

如果你想改进你的代码的语义,你会使用Array.prototype.forEach专门设计的迭代数组而不返回任何东西:

var myArr = [34,45,67,34,2,67,1,5,90];
var evenArr = [];
var oddArr = [];
myArr.forEach(x => {
    if (x % 2 === 0) {
        evenArr.push(x);
    } else {
        oddArr.push(x);
    }
});
Run Code Online (Sandbox Code Playgroud)

参考文献: