Javascript 映射中的if语句

Javascript 映射中的if语句,javascript,arrays,Javascript,Arrays,现在我得到了一份工作 continue必须位于循环内 我认为这是一个语法错误,因为它应该被修复 修复此问题以在if语句中保留此逻辑是否可以与映射一起工作 sales = data.map(function(d) { if (isNaN(+d.BookingID) == false && isNaN(+d["Total Paid"]) == false) { return [+d.BookingID, +d["Total Paid"]]; }

现在我得到了一份工作

continue必须位于循环内

我认为这是一个语法错误,因为它应该被修复

修复此问题以在if语句中保留此逻辑是否可以与映射一起工作

sales = data.map(function(d) { 
    if (isNaN(+d.BookingID) == false && isNaN(+d["Total Paid"]) == false) {
        return [+d.BookingID,   +d["Total Paid"]]; 
    } else {
        continue;
    }
}); 

地图应该是1:1

如果还需要筛选,则应先筛选,然后映射


正如其他人提到的,您不能从映射回调中继续跳过元素。你需要使用过滤器。为了避免两次引用字段,一次在筛选器中,一次在映射中,我会在之后进行筛选:

sales = data
  .map(d => [+d["bookingId"], +d["Total Paid"]])
  .filter(([id, total]) => !isNaN(id) && !isNaN(total));
或者,为了便于以后在数组中包含其他值,请执行以下操作:

sales = data
  .map(d => [+d["bookingId"], +d["Total Paid"]])
  .filter(results => results.every(not(isNaN)));
在哪里

以及,使用参数分解:

sales = data
  .map(({bookingId, "Total Paid": total)) => [bookingId, total])
  .filter(allNotNaN);

你不需要继续。映射将迭代数据中的所有项。在这种情况下,我希望继续的相反行为。如果我映射的行在转换为数值后BookingID和Total Paid为NaN,我想跳过它们。如果只想返回与条件匹配的数据,请使用a,而不是.map..map对数组中的每个数据点执行一个函数,并将该数据点设置为回调函数返回的任何值。您正在寻找.filter吗?.filter/*if条件*/.map/*返回表达式*/
function not(fn) { return x => !fn(x); }
function allNotNaN(a) { return a.every(not(isNaN)); }
sales = data
  .map(({bookingId, "Total Paid": total)) => [bookingId, total])
  .filter(allNotNaN);