Javascript 如何防止map函数返回null

Javascript 如何防止map函数返回null,javascript,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组件,我会得到一个错误undefined不是一个对象。 所以我不想将null传递给language.all.ma

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

languages.all.map((i,index) =>  i.alpha2 ? { label: i.name, value: i.alpha2 } : null )
但是如果我把它传递给我的react组件,我会得到一个错误undefined不是一个对象。 所以我不想将null传递给language.all.map创建的数组,我想跳过在数组中传递某些内容的过程


如何执行此操作?

当map返回调用数组中每个元素的结果时,您可以过滤空值:

或:在一次迭代中使用
reduce()
会更好

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

map
返回数组中原来的元素数。您可以使用
filter
删除
null
值,或者使用
reduce
而不是
map
,在需要时将元素插入累加器。
languages.all.reduce(function(acc, cur) {
  if (cur.alpha2) {
    var o = { label: cur.name, value: cur.alpha2 };
    acc.push(o);
  }
  return acc;
}, []);