集合–求补集(foreach&find)
1.声明两个集合
allColors: [
{ id: '0', name: '粉色' },
{ id: '1', name: '蓝色' },
{ id: '2', name: '红色' },
{ id: '3', name: '橘色' },
{ id: '4', name: '黑色' },
{ id: '5', name: '紫色' },
{ id: '6', name: '白色' },
{ id: '7', name: '黄色' },
{ id: '8', name: '棕色' }
]
myColors: [
{ id: '0', name: '粉色' },
{ id: '1', name: '蓝色' },
{ id: '2', name: '红色' },
]
2.foreach 和 find方法求补集
代码如下(示例):
// find() 找到符合要求的数据,返回true
1.该方法主要应用于查找第一个符合条件的数组元素,
即返回通过测试(函数内判断)的数组的第一个元素的值。
2.它的参数是一个回调函数,为数组中的每个元素都调用一次函数执行。
在回调函数中可以写你要查找元素的条件,当条件成立为true时,返回该元素,
之后的值不会再调用执行函数。如果没有符合条件的元素,返回值为undefined。
recommendColors () {
const recolors= []
this.allColors.forEach((color) => {
const ret = this.myColors.find((mycolor) => {
return mycolor.id === color.id
})
// 如果我的颜色中不包含该颜色,则收集到推荐颜色中
if (!ret) {
recolors.push(color)
}
})
// 把计算结果返回
return recolors
}
3.filter 和 find 方法求补集
代码如下(示例):
// filter用于对数组进行过滤。
// filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
recommendChannels () {
//数组的filter方法:遍历数组,把符合条件的元素存储到数组中
return this.allChannels.filter((channel) => {
// 数组的find的方法:遍历数组,把符合条件的第一个元素返回
return !this.myChannels.find((myChannel) => {
return myChannel.id === channel.id
})
})
}