在一个数组内查找符合某个条件的另一个数组里的元素
概述
一般用于手写复选插件的回显,源数据是一个数组,选中的数据也可能是一个数组。
代码(在原数组中查找age与选中的数组元素相同的元素,也可以直接改原数据)
const { log } = console
// ===============
/**
* 在一个数组内查找另一个数组里的元素
* @currentArr 选中的数组
* @dataArr 原数据
*/
const findArrItemInArr = function (currentArr, dataArr) {
const targetArrIndex = [] //原数组中找到的元素的下标
const targetArr = [] // 原数组中找到的元素,组成的数组
currentArr.forEach(item => {
dataArr.forEach((itemJ,j) => {
if (item == itemJ['age']) {
targetArrIndex.push(j) // 存入符合要求的index
targetArr.push(itemJ) // 存入符号要求的item
dataArr[j].select=true // 改变原数组的某个属性
}
})
})
return {
targetArrIndex,
targetArr
}
}
const currentArr = [14, 15]
let dataArr = [{
name: 'lilei',
age: 16,
gender: '1'
},
{
name: 'lilei2',
age: 14,
gender: '1'
},
{
name: 'hanmm',
age: 15,
gender: '0'
},
{
name: 'json',
age: 16,
gender: '1'
}]
const {targetArrIndex,targetArr}=findArrItemInArr(currentArr,dataArr)
log(targetArrIndex) // [1,2]
log(targetArr)
/* [
{ name: 'lilei2', age: 14, gender: '1', select: true },
{ name: 'hanmm', age: 15, gender: '0', select: true }
] */