在JavaScript ES6中使用if-else
Use of if-else in JavaScript ES6
我正在学习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);
});
现在,如果我将其转换为ES6,我会在if
附近得到Unexpected token
的错误,让我知道我在这里做错了什么-
我的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) )
这是因为当您传递语句时,箭头函数接受表达式。
您的代码具有误导性: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);
}
});
参考文献:
Array.prototype.forEach()
- 箭头函数
对于内联条件,应该使用三元运算符。
myArr.map( x => x%2==0 ? evenArr.push(x) : oddArr.push(x) )
如果不使用括号定义Arrow函数的主体,那么主体应该是一个表达式。在您的情况下,它不是表达式,而是if
语句。
你需要用复合体来定义它,比如这个
myArr.map(x => {
if (x % 2 === 0)
evenArr.push(x);
else
oddArr.push(x);
})
或者你应该定义它来返回一个表达式,比如这个
myArr.map(x => x%2==0 ? evenArr.push(x) : oddArr.push(x))
注意:您不应该使用map
来执行此操作。只有当您需要根据另一个数组的值创建新数组时,才应使用map
。在处理有副作用的函数时,应该使用forEach
。在您的情况下,您正在修改您的函数范围之外的对象。因此forEach
将是最适合这里的。
如果箭头函数体包含多个语句,则它必须包含在一个块中。此外,不能省略这样的分号。
forEach更具语义(因为您的函数只返回未定义,而且您无论如何都不会保留新数组),并且您可以直接使用x%2
的值:
myArr.forEach( x => {if(x%2) oddArr.push(x); else evenArr.push(x)} )
还有:
myArr.forEach(x => [evenArr,oddArr][x%2].push(x));
var myArr = [34,45,67,34,2,67,1,5,90];
var evenArr = [];
var oddArr = [];
myArr.map( x => (x%2==0)? evenArr.push(x) : oddArr.push(x) )
请尝试上面的代码。这似乎奏效了。
我刚刚用三元算子(? :
)代替了if..else
。
相关文章:
- Javascript Return and if/else
- JavaScript if-else 速记错误
- 在javascript中创建数组,而不是if.else
- Javascript If else 只返回 TRUE 或只返回 FALSE
- 在Javascript中为if/else语句添加OR
- jQuery/Javascript foreach If/Else |如果为空(不执行任何操作)Else(显示forea
- JavaScript中的温度转换器(IF ELSE条件)
- Jquery/Javascript使用IF/ELSE语句更改img SRC
- JavaScript if/else未按预期操作
- 我可以用javascript中的switch或case语句重构if-else吗
- JavaScript IF.ELSE条件未输出预期值
- JavaScript if else 语句来显示 html 标签
- codeacademy if/else javascript
- 这很难简明扼要地说.但是我的 if/else javascript 有问题.“如果”在“其他”发生之后不会发生
- 这个 if/else Javascript 函数有什么问题
- if-else javascript语句总是返回if
- if-else Javascript语句的语法错误
- If/else Javascript语句的行为不符合预期
- If/else Javascript语句与数据表不能正常工作
- 高级if else javascript语句在代码保护中的使用