有没有办法全局而不是单独处理未定义的值?

Is there a way of handling undefined values globally instead of individually?

我正在使用一个 api 可能会或可能不会 return 任何对象属性。 因此,我只想获取键存在的值。

因为我需要从 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;
  }
});