arr1 = [{name: 'wang', city: '上海', id: 1}, {name: 'lin', city: '杭州', id: 7}]
arr2 = [
{name: 'wang', city: '上海', id: 1},
{name: 'lin', city: '杭州', id: 7},
{name: 'chen', city: '深圳', id: 9}
]1.双层for循环 + flag变量 新数组更新就数组元素
- 定义变量 flag
- 双层for循环通过变量判断是否已经存在改元素对象
- 大数组放在外层
let newArr = []
for(let i = 0; i < arr2.length; i++) {
let flag = false
for (let j = 0; j < arr1.length, j++) {
if (arr2[i].id == arr1[j].id){
arr2[i] = arr1[j]
flag = true
}
}
if (!flag) {
newArrr.push(arr2[i])
}
}应用场景 接口返回数组 更新原始数组
for(let j = 0; j < res.length; j ++) {
let flag = false
for (let i = 0; i < that.textArray.length; i++) {
if (that.textArray[i].id == res[j].id) {
that.textArray.splice(i, 1, res[j])
flag = true
}
}
if (!flag) {
that.textArray.push(res[j])
}
}
2.匹配数组中的id,修改数组属性值
临时数组, 其中一个数组属性值作为临时数组的key值
let obj = [] //临时数组
for (let i = 0; i < arr2.length; i++) {
obj[arr2[i].id] = true
}
for (let j = 0; j < arr1.length, j++) {
if (obj[arr1[j].id]) {
arr1[j] = {}
}
}
应用场景 已知一个id数组,去查找arr数组中对应的id, 修改元素
let obj = [] //临时数组
for (let i = 0; i < arr2.length; i++) {
if (obj[arr[2]]) {}
obj.push(arr2[i])
obj[arr2[i].id] = true
}
for (let j = 0; j < arr1.length, j++) {
if (obj[arr1[j].id]) {
arr1[j].sex = 'women'
}
}3.数组去重
采用对象访问属性的方法,判断属性值是否存在
- 两个临时数组 newArr, obj
- for循环 数组对象push新数组 同时数组对象id属性值作为临时数组的key, 值为true
// 利用对象访问属性的方法,判断对象中是否存在key let newArr = []; let obj = {}; for (var i = 0; i < arr.length; i++) { if (!obj[arr[i].key]) { newArr.push(arr[i]); obj[arr[i].key] = true; } } console.log(newArr);
4.数组去重合并
- 合并两数组 然后去重
- for循环找出相同的id,组成数组,然后去创建临时数组 ,key值为相同的id
。。。。待更新