三种方法教你判断 JavaScript 数组中对象特定属性值是否唯一
要判断 JavaScript 数组中某个对象的特定属性值是否唯一,可以通过以下几种方式实现: 方法一:使用 `Set` `Set` 是一个具有唯一值的集合,我们可以利用它的特性来检查数组中对象的某个属性值是否唯一。 ```javascript function isUnique(arr, key) { const values = arr.map(item => item[key]); const uniqueValues = new Set(values); return uniqueValues.size === values.length; } // 示例 const arr = [ { id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'Alice' } ]; console.log(isUnique(arr, 'name')); // false console.log(isUnique(arr, 'id')); // true ``` 方法二:使用对象计数 另外一种方法是使用一个对象来记录属性值的出现次数,然后检查是否有重复。 ```javascript function isUnique(arr, key) { const count = {}; for (const item of arr) { const value = item[key]; count[value] = (count[value] || 0) + 1; } return Object.values(count).every(c => c === 1); } // 示例 const arr = [ { id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'Alice' } ]; console.log(isUnique(arr, 'name')); // false console.log(isUnique(arr, 'id')); // true ``` 方法三:使用 `filter` 和 `length` 虽然这个方法不够高效,但它简单易懂。我们可以使用 `filter` 方法来查找所有与给定属性值相等的项目,并检查其长度。 ```javascript function isUnique(arr, key) { for (const item of arr) { const occurrences = arr.filter(i => i[key] === item[key]).length; if (occurrences > 1) { return false; } } return true; } // 示例 const arr = [ { id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'Alice' } ]; console.log(isUnique(arr, 'name')); // false console.log(isUnique(arr, 'id')); // true ``` 以上三种方法都可以判断数组中某个对象的某个键的值是否唯一。选择合适的方法主要依赖于代码的可读性和性能考虑。使用 `Set` 通常是最推荐的,因为它清晰且性能较好。 ######[AI写代码神器 | 1280点数解答 | 2024-10-23 14:29:03]
- Java 实现计算机硬件模拟:从 PCI 设备到主板、计算机的启动与关闭(字节豆包 | 716点数解答 | 2024-12-08 23:38:38)353
- Java 代码:模拟计算机主板启动与关闭 PCI 设备全流程(字节豆包 | 637点数解答 | 2024-12-09 08:31:54)320
- MySQL:创建 schooldb 数据库及 teacher、class、course、student 表的完整 SQL 实现(字节豆包 | 312点数解答 | 2024-11-18 14:36:45)319
- Java 实现:输入 3 个学生成绩信息并计算总分与平均分(字节豆包 | 847点数解答 | 2024-10-11 08:45:50)750
- Java 实现:3 个学生成绩信息封装与总分、平均分计算(字节豆包 | 581点数解答 | 2024-11-19 15:54:02)450
- Java 实现:3 学生成绩计算,含输入合法性、精度处理与异常处理 (字节豆包 | 655点数解答 | 2025-04-18 11:41:55)407
- Java编程:学生成绩计算与输出,含成绩类和学生类实现(DeepSeek | 621点数解答 | 2025-04-18 11:43:55)638
- Java 实现:输入 3 学生成绩,精准计算总分与平均分!(字节豆包 | 988点数解答 | 2025-10-08 20:31:01)171
- Java 学生成绩管理系统开发:类型转换、Map 存储与数值计算的注意要点(DeepSeek | 605点数解答 | 2025-10-08 21:37:55)169
- Java 实现:3 个学生成绩计算全流程,代码及注意点揭秘(字节豆包 | 836点数解答 | 2025-10-29 09:00:27)161
- Java实现学生成绩计算:避免陷阱,精准输出总分与平均分(阿里通义 | 852点数解答 | 2025-10-29 16:07:33)305
- Python实现学生成绩管理:输入格式、数据类型与成绩赋值需谨慎!(字节豆包 | 629点数解答 | 2025-10-30 16:52:22)162