我需要知道 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/