一、已知数组,返回出符合数组元素的新数组。
const foods = [
{ name: "汉堡包", group: 1 },
{ name: "薯条", group: 2 },
{ name: "咖啡", group: 3 },
{ name: "可乐", group: 4 },
];
const arr = [2, 3];
已知两个数组返回新数组[{ name: "薯条", group: 2 },{ name: "咖啡", group: 3 }]
1、for循环
var newArr = [];
for (let i = 0; i < foods.length; i++) {
for (let m = 0; m < arr.length; m++) {
if (foods[i].group == arr[m]) {
newArr.push(foods[i]);
}
}
}
2、filter
var newArr=foods.filter((i)=>arr.includes(i.group))
filter循环代码更简便,效率更高。
二、已知数组,求数组中某个元素是否为空。
const foods = [
{ name: "汉堡包", group: 1 },
{ name: "薯条", group: 2 },
{ name: "咖啡", group: 3 },
{ name: "可乐", group: 4 },
];
1、for循环
let ifSubmit = false;
for (let i = 0; i < foods.length; i++) {
if (foods[i].name == "") {
ifSubmit = true;
}
}
2、map循环
let ifSubmit=foods.map((i)=>i.name).includes('')
map循环代码更简便,效率更高。
三、已知数组与对象,判断数组是否存在对象,无则修改,有则新增。
const foods = [
{ name: "汉堡包", group: 1 },
{ name: "薯条", group: 2 },
{ name: "咖啡", group: 3 },
{ name: "可乐", group: 4 },
];
1、forEach循环
let hasInclude = foods.map((i) => i.group).includes(obj.group);
if (hasInclude) {
foods.forEach((item) => {
if (item.group == obj.group) {
item.name = obj.name;
}
});
} else {
foods.push(obj);
}
2、findIndex循环
let index = foods.findIndex((item) => item.group == obj.group);
index >= 0 ? foods.splice(index, 1, obj) : foods.push(obj);
findIndex找出符合条件的角标,然后用三元运算判断替换。