javascript - 为什么 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;
});
解决方案
您需要在映射后过滤值,您可以使用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;
}, [])
推荐阅读
- javascript - 如何处理来自 Flask 后端的响应以运行单独的 Python 脚本?
- jhipster - JHipster 单独服务 Angular 前端 - Cors 问题
- rubygems - 安装可可豆荚时出现错误
- python - auto arima python中的预测区间
- javascript - 如何将 json 上传到 rails 请求的正文以及 json 正文旁边的独立图像?
- android - 当父布局指定了自己的主题时,子视图中的自定义属性问题
- c# - 服务结构容器不允许 http/s 调用外部 API
- java - 使用 AsyncHttpClient 自定义 SSL 证书
- laravel - Laravel 模型必须返回一个关系实例
- c# - In an AspNetCore API controller, is there a well-accepted way to DRY out repetitious validation code?