javascript - 如何确定Javascript数组是否包含属性彼此相等的对象

标签 javascript arrays

我有一个像这样的数组

selectedData = [{
   Name = 'Michelle', 
   LRN = '100011'
 },
 {
   Name = 'Micheal', 
   LRN = '100011'
 },
 {
   Name = 'Mick', 
   LRN = '100012'
 } // so on....
]

我通过一个函数发送这个数组,它只是检查每个对象的 LRN 属性是否相同,如果不同则抛出错误。我已将函数编写为 -

createSet(selectedData) {
 this.selectedData.forEach (element => {
 //the condition
 }
 else
 {
  this.openSnackBar ("LRN mismatching");
 }
}

如何检查每个对象的LRN属性是否相同?除非必要,否则我不想循环。我正在处理超过一千条记录。我感谢所有的帮助。 :)

最佳答案

你可以采取Array#every并互相检查第一项。如果条件为 false,该方法将停止迭代,然后返回 false,否则返回 true

回调的参数可以包含三部分,一部分用于项目,下一个用于索引,第三部分包含对数组的引用。

在这种情况下,仅该项目与 destructuring 一起使用。 LRN 和数组。不需要的索引用下划线表示,这是 Javascript 中的有效变量名称。

if (!array.every(({ LRN }, _, a) => LRN === a[0].LRN)) {
    this.openSnackBar ("LRN mismatching");
}

包含具有相同值的所有属性 LRN 的示例的代码。

const
    selectedData = [{ Name: 'Michelle', LRN: '100011' }, { Name: 'Micheal', LRN: '100011'}, { Name: 'Mick', LRN: '100011' }];

if (!selectedData.every(({ LRN }, _, a) => LRN === a[0].LRN)) {
    console.log("LRN mismatching");
} else {
    // just to show
    console.log('OK');
}

不匹配

const
    selectedData = [{ Name: 'Michelle', LRN: '100011' }, { Name: 'Micheal', LRN: '100011'}, { Name: 'Mick', LRN: '100012' }];

if (!selectedData.every(({ LRN }, _, a) => LRN === a[0].LRN)) {
    console.log("LRN mismatching");
} else {
    // just to show
    console.log('OK');
}

关于javascript - 如何确定Javascript数组是否包含属性彼此相等的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71157281/

相关文章:

javascript - 模拟XHR2文件上传

JavaScript 本地存储未在另一个文件中显示正确的值

javascript - 向对象添加唯一的数组并确保它们是不同的

java - 我检查字符串数组是否已排序的方法有什么问题

javascript - 有没有办法每隔几秒检查 chrome 扩展中 content.js 中的 DOM 元素?

javascript - 如何设置跨源 header 以允许数据 URL?

javascript - react : How to access component refs from Redux/Flux actions?

PHP,如何轻松地将索引数组转换为关联数组

php - 不要单独处理行,也不包含表元数据

C#:O(n²) 解决方案,用于查找大小为 n 且数字为 k 的数组的 n/k 个元素