javascript - 如何防止map函数返回null

标签 javascript

我有一个称为语言的对象列表。 如果语言对象有 alpha2 它应该返回 { label: i.name, value: i.alpha2 } 。 如果它没有 alpha2 它应该返回 null 。

languages.all.map((i,index) =>  i.alpha2 ? { label: i.name, value: i.alpha2 } : null )

但是如果我将其传递给我的 react 组件,我会得到一个错误:未定义不是对象。 所以我不想将 null 传递给由 language.all.map 创建的数组,我想跳过在数组中传递某些内容的过程。

我怎样才能做到这一点?

最佳答案

由于映射返回调用数组中每个元素的结果,因此您可以过滤null:

languages.all.map((i,index) =>  i.alpha2 ? { label: i.name, value: i.alpha2 } : null )
             .filter(i => i);

OR:在单次迭代中使用 reduce() 效果更好

languages.all.reduce(function(acc, cur) {
  if (cur.alpha2) {
    var o = { label: cur.name, value: cur.alpha2 };
    acc.push(o);
  }
  return acc;
}, []);

关于javascript - 如何防止map函数返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61168393/

相关文章:

javascript - Material ui的加载栏组件的颜色变化

JavaScript 使用 console.log 获取带有引号的嵌套数组(1 层)并保留数字

javascript - 检查url是否有域名而不是ip

javascript - 如何将参数传递给一个传递的函数? (ES6)

javascript - 无法确定字符串是否包含数组中的单词

javascript - 文本区域自动完成

javascript - 未定义未捕获的 ReferenceError $

php - json_encode 与 $_GET 结合(PHP 和 Javascript)

javascript - Fullcalendar:如何知道我在哪个单元格中放置了一个项目?

javascript - 使用firebase云功能删除多个文档