javascript - 如何查找数组中对象的出现次数

标签 javascript arrays object

我需要知道 JavaScript 中的对象数组中是否至少包含两个相同的对象。

我有一个表单,允许人们创建问题(标题、描述、类型、答案选项)。我需要检查用户是否输入了具有相同标签的多个答案选项。它们存储在一个数组中。

// The array of answer options
let array = [{value: 'a'}, {value: 'b'}, {value: 'c'}, {value: 'a'}]

我尝试使用 array.indexOf({value: 'a'})array.lastIndexOf({value: 'a'}) 但它们都给了我索引为-1。

最佳答案

单独的对象彼此之间永远不会===,因此您必须使用不同的方法。一种选择是创建一组字符串化对象,并在发现任何重复字符串后返回 true:

const hasDupes = (arr) => {
  const strings = new Set();
  for (const obj of arr) {
    const string = JSON.stringify(obj);
    if (strings.has(string)) {
      return true;
    }
    strings.add(string);
  }
  return false;
};
console.log(hasDupes([{value: 'a'}, {value: 'b'}, {value: 'c'}, {value: 'a'}]));
console.log(hasDupes([{value: 'a'}, {value: 'b'}, {value: 'c'}]));

关于javascript - 如何查找数组中对象的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56333405/

相关文章:

javascript - 使用 jQuery 或 JavaScript 将 <span> 与 <a> 包裹起来

javascript - 使用 Javascript 解析并返回日期的组成部分

java - 覆盖预定义数组

PHP 数组未设置

javascript - 如何为 DirectionsService 编写回调函数

最小公倍数的Javascript代码

javascript - 在javascript中创建数组时出现问题

javascript - 在 React 中动态更新 'state' 会覆盖整个状态

object - 添加js方法

javascript - JavaScript 中的对象属性 "Previous Value"