Javascript从对象中删除null

时间:2017-10-11 07:51:06

标签: javascript arrays

我正在合并两个这样的阵列:

var sorting = data.genre.map((i) => data_info.find((o) => o.id === i));

此函数中的问题是,如果在genre中找不到data_info,它会向对象arra添加null,因此我的功能失败。
所以问题是:如何在上面的单行中删除所有为null的值?

我从上面的thr行得到了这个输出:

[{"id":1,"category":"Action"},{"id":2,"category":"Adventure"},null]

需要得到这个:

[{"id":1,"category":"Action"},{"id":2,"category":"Adventure"}]

我尝试将&& data_info(o) !== null添加到上面的行中,但无论如何我在对象数组中得到null

3 个答案:

答案 0 :(得分:2)

.map更改为.filter

var sorting = data.genre.filter((i) => data_info.find((o) => o.id === i) ? true : false);

答案 1 :(得分:1)

您可以通过传递回调提供的函数来使用filter方法。

var sorting = data.genre.map((i) => data_info.find((o) => o.id === i)).filter(function(item){
    return item!=null;
});

答案 2 :(得分:1)

您可以filter map功能的结果删除null

var sorting = data.genre.map((i) => data_info.find((o) => o.id === i)).filter(item => {
   return item !== null;
});
  

filter()方法创建一个包含所有传递元素的新数组   由提供的函数实现的测试。