javascript - 如何根据一个属性优化JS对象的数组查找

标签 javascript jquery arrays

我们有大量的对象:

var englishStudents = [
    {StudentId: 1, Name: "John"},
    {StudentId: 2, Name: "Jack"},
    {StudentId: 3, Name: "Jane"}
];

需要检查此数组中是否包含另一个相似的对象,只需单独比较一个属性即可。

var randomStudent = {StudentId: 1337, Name: "Foo"};

这就是我所拥有的,似乎它会起作用,但我认为这不是最好的方法。

var studentIds = $.map(englishStudents, function (student, index) { return student.StudentId; });
var randomStudentLearnsEnglish = false;
for (var sId in studentIds) {
    if (randomStudent.StudentId == sId) {
        randomStudentLearnsEnglish = true;
        break;
    }
}

执行此操作的优化方法是什么?

最佳答案

您应该将学生数据保存在哈希表中,例如 JHashtable而不是数组。对于更复杂的场景,您可以维护多个哈希表,例如 studentsByIdstudentsByCountryCode 等。

关于javascript - 如何根据一个属性优化JS对象的数组查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14636266/

相关文章:

javascript - 测试函数以在 Jest 中抛出错误

javascript - 当所有 DOM 激活时,javascript 中什么是合适的事件?

javascript - Jquery 在行路径中水平水平制作六个图像的动画

javascript - 返回数组中的特定对象值

PHP - 找出这个 foreach 中的问题?

java - [ ][ ] 和 if 语句的问题

javascript - 检查不同服务器上的文件

java - 文件目标选择器

jquery - 用 jQuery 改变按钮的功能?

javascript - 如何在滚动的 div 上切换固定位置类?