首页 > 解决方案 > 为什么 JS Map 函数返回未定义?

问题描述

我有一个长度约为 1000 的数组。为什么 map 函数在某些索引中返回未定义?有没有办法只返回满足这个条件的数组?我想返回一个值 > 0 的数组。

 var total_percents = cars.map(function(element) {
        var savings_percent = Number(element[0].getAttribute("percent-savings"));
        if (savings_percent > 0)
            return savings_percent;
});

标签: javascriptjqueryarrays

解决方案


您需要在映射后过滤值,您可以使用filter带有谓词的数组方法来完成,例如car => car > 0

var total_percents = cars.map((element) => Number(element[0].getAttribute("percent-savings"))).filter(car => car > 0)

您还可以使用reduce方法同时组合这两个操作:

var total_percents =
  cars.reduce((acc, element) => {
    const percentSavings = Number(element[0].getAttribute("percent-savings"));

    if (percentSavings > 0) {
      acc.push(percentSavings);
    }

    return acc;
  }, [])


推荐阅读