javascript - 有没有办法全局而不是单独处理未定义的值?
问题描述
我正在使用可能会或可能不会返回任何对象属性的 api。因此,我只想获取键的值(如果存在)。
由于我需要从 API 中获取数百个值,我很想找到一种全局处理未定义值的方法(每个值分配仅在找到它要查找的键时执行)而不是为每个值创建一个 if 语句我正在取回。
result.forEach((item, i) => {
let selectedLegend = Object.values(result[i]['legends']['selected'])[0];
if(selectedLegend['kills']){
datosTotales.kills += selectedLegend['kills'];
}
if(selectedLegend['wins_season_3']){
datosTotales.wins += selectedLegend['wins_season_3'];
}
if(selectedLegend['top_3']){
datosTotales.top3 += selectedLegend['top_3'];
}
// ...
// ...
});
解决方案
一种选择是解构并将属性默认为 0,如果它们不存在,然后将它们相加:
result.forEach((item, i) => {
const selectedLegend = result[i].legends.selected;
const { kills = 0, wins_season_3 = 0, top_3 = 0 } = Object.values(selectedLegend)[0];
datosTotales.top3 += kills + wins_season_3 + top_3;
});
如果这对您来说太重复了,那么迭代一组属性名称:
result.forEach((item, i) => {
const selectedLegend = result[i].legends.selected;
const obj = Object.values(selectedLegend)[0];
for (const prop of ['kills', 'wins_season_3', 'top_3']) {
datosTotales.top3 += obj[prop] || 0;
}
});
推荐阅读
- python-3.x - 如何按图像高度对图像列表进行排序?(Python)
- python - Python Selenium Web 自动化如何单击登录按钮
- c++ - LAPACKE C++ 复矩阵求逆
- android - 充当 ViewModel 的活动范围的常规类
- html - 为什么我的背景图片不显示?
- postgresql - 如何在 PostgreSQL/PostGIS 中获得 3 个点的三角形面积?
- javascript - 我如何将 onsubmit 属性添加到
- .net - .net 正则表达式 - 最后一个列表项上不包含句号的字符串
- javascript - 在使用护照授权后,我如何获取/请求推文以做出反应
- amazon-web-services - AWS IAM - EC2 - 限制对特定子网的访问