const setA = new Set(A.map((item) => item.deviceName))
const res = B.filter(item => !setA.has(item.deviceName))
console.log('两个列表中不重复的元素', res )
这段代码主要实现了从一个列表中筛选出不在另一个集合中的元素。
- 首先,通过
map
方法将A列表中的每个元素的deviceName
属性提取出来,并创建了一个新的集合setA
。 - 然后,使用
filter
方法对B列表进行筛选,只保留那些deviceName
属性不在setA
集合中的元素。 - 最终,得到一个新的列表res,其中包含了所有不在A列表中的元素的
deviceName
属性。
简而言之,这段代码的作用是找出两个列表中不重复的元素。
这段解释其实是通义灵码的原话,是不是很强大
举例:
A=
[
{
"deviceName": "xwM3iOvNPUwCGx8k",
"productKey": "3LHl5ZWrRqS"
},
{
"deviceName": "wEhmko3YjUlRPaGj",
"productKey": "3LHl5ZWrRqS"
}
]
B = [
{
"deviceName": "kkkkk",
"productKey": "FAcyh7L77GA"
},
{
"deviceName": "IWGNbnkyTDjtrS9p",
"productKey": "3LHl5ZWrRqS"
},
{
"deviceName": "xwM3iOvNPUwCGx8k",
"productKey": "3LHl5ZWrRqS"
},
{
"deviceName": "wEhmko3YjUlRPaGj",
"productKey": "3LHl5ZWrRqS"
}
]
setA = new Set(A.map((item) => item.deviceName))
// new Set([
// "xwM3iOvNPUwCGx8k",
// "wEhmko3YjUlRPaGj"
// ])
B.filter(item => !setA.has(item.deviceName))
[
{
"deviceName": "kkkkk",
"productKey": "FAcyh7L77GA"
},
{
"deviceName": "IWGNbnkyTDjtrS9p",
"productKey": "3LHl5ZWrRqS"
}
]