📜  在javascript中查找数组中有多少相似的对象项(1)

📅  最后修改于: 2023-12-03 15:07:53.447000             🧑  作者: Mango

在Javascript中查找数组中有多少相似的对象项

在开发应用程序时,可能需要在数组中查找是否存在相似的对象项。这个过程可以通过遍历数组并比较对象中的属性来实现。在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

以上是三种不同的方法,可以根据自己的喜好来选择使用。其中都是先使用循环遍历数组,然后逐一比较对象中的属性是否匹配。如果全部匹配,则记录匹配的个数。