我正在合并两个这样的阵列:
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
。
答案 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()方法创建一个包含所有传递元素的新数组 由提供的函数实现的测试。