我有两个数组:
let channelList = [
{
"channelId": 1,
"channelName": "SMS"
},
{
"channelId": 2,
"channelName": "EMAIL"
},
{
"channelId": 3,
"channelName": "ANDROID"
},
{
"channelId": 4,
"channelName": "IOS"
}
]
和
let promoList = [
{
"id": 124,
"channelType": "SMS"
},
{
"id": 125,
"channelType": "ANDROID"
},
{
"id": 126,
"channelType": "IOS"
}
]
我想要一个新的数组remainingChannels
,其中有
{
"channelId": 2,
"channelName": "EMAIL"
}
因为它不在promoList
中,但在channelList
中存在。
我正在尝试使用如下过滤器操作来获取它:
for(let channel of this.promoDetailList) {
remainingChannels = this.channelList.filter(e => {
e.channelName == channel.channelType
});
}
该怎么做?
答案 0 :(得分:4)
您可以使用Array.filter
和Array.some
let channelList = [{"channelId":1,"channelName":"SMS"},{"channelId":2,"channelName":"EMAIL"},{"channelId":3,"channelName":"ANDROID"},{"channelId":4,"channelName":"IOS"}];
let promoList = [{"id":124,"channelType":"SMS"},{"id":125,"channelType":"ANDROID"},{"id":126,"channelType":"IOS"}]
//Check if the `channelName` from `channels` is matching with any of the
//`channelType` from `promos` list, negate the result.
const filterData = (channels, promos) => channels.filter(channel => !promos.some(promo => promo.channelType === channel.channelName))
console.log(filterData(channelList, promoList));
这也可以使用Array.filter
和Array.find
来实现。
let channelList = [{"channelId":1,"channelName":"SMS"},{"channelId":2,"channelName":"EMAIL"},{"channelId":3,"channelName":"ANDROID"},{"channelId":4,"channelName":"IOS"}];
let promoList = [{"id":124,"channelType":"SMS"},{"id":125,"channelType":"ANDROID"},{"id":126,"channelType":"IOS"}]
const filterData = (channels, promos) => channels.filter(({ channelName }) => !promos.find(({ channelType }) => channelName === channelType));
console.log(filterData(channelList, promoList))
答案 1 :(得分:1)
您可以使用Array.filter
来做到这一点。
let channelList = [
{
"channelId": 1,
"channelName": "SMS"
},
{
"channelId": 2,
"channelName": "EMAIL"
},
{
"channelId": 3,
"channelName": "ANDROID"
},
{
"channelId": 4,
"channelName": "IOS"
}
]
let promoList = [
{
"id": 124,
"channelType": "SMS"
},
{
"id": 125,
"channelType": "ANDROID"
},
{
"id": 126,
"channelType": "IOS"
}
]
const result = channelList.filter(({channelName}) => {
return promoList.filter(({ channelType }) => channelType === channelName).length == 0;
});
console.log(result);
答案 2 :(得分:0)
将其中一个数组的项目提取到字符串数组中。
{
$addFields: {
date: {
$cond: [
{ $gt: [{ $size: "$array" }, 0] },
"date field", // your date field
"$$REMOVE"
]
}
}
}