📅  最后修改于: 2023-12-03 15:07:53.447000             🧑  作者: Mango
在开发应用程序时,可能需要在数组中查找是否存在相似的对象项。这个过程可以通过遍历数组并比较对象中的属性来实现。在Javascript中,有多种方法可以实现这个功能。以下是一些示例代码,可以作为参考。
function countSimilar(arr, obj) {
let count = 0;
for (let i = 0; i < arr.length; i++) {
let match = true;
for (let prop in obj) {
if (arr[i][prop] !== obj[prop]) {
match = false;
break; // 如果不匹配,则跳出当前循环
}
}
if (match) {
count++; // 如果全部匹配,则计数器加1
}
}
return count;
}
const arr = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'Alice', age: 35 },
{ name: 'Charlie', age: 40 },
{ name: 'Bob', age: 45 }
];
const obj = { name: 'Alice', age: 25 };
console.log(countSimilar(arr, obj)); // 1
filter()
方法function countSimilar(arr, obj) {
let result = arr.filter(item => {
let match = true;
for (let prop in obj) {
if (item[prop] !== obj[prop]) {
match = false;
break; // 如果不匹配,则跳出当前循环
}
}
return match; // 如果全部匹配,则返回true
});
return result.length;
}
const arr = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'Alice', age: 35 },
{ name: 'Charlie', age: 40 },
{ name: 'Bob', age: 45 }
];
const obj = { name: 'Alice', age: 25 };
console.log(countSimilar(arr, obj)); // 1
reduce()
方法function countSimilar(arr, obj) {
let result = arr.reduce((count, item) => {
let match = true;
for (let prop in obj) {
if (item[prop] !== obj[prop]) {
match = false;
break; // 如果不匹配,则跳出当前循环
}
}
if (match) {
count++; // 如果全部匹配,则计数器加1
}
return count;
}, 0);
return result;
}
const arr = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'Alice', age: 35 },
{ name: 'Charlie', age: 40 },
{ name: 'Bob', age: 45 }
];
const obj = { name: 'Alice', age: 25 };
console.log(countSimilar(arr, obj)); // 1
以上是三种不同的方法,可以根据自己的喜好来选择使用。其中都是先使用循环遍历数组,然后逐一比较对象中的属性是否匹配。如果全部匹配,则记录匹配的个数。