Javascript过滤列表&从中返回匹配的项目

时间:2017-10-25 15:26:04

标签: javascript jquery

有没有更好的方法来编写以下用于过滤的JS代码?从数组中返回项目;

myArray.forEach(function(x) {
    if (x.id === y.id) {
        row = x;
    }
})

我愿意使用jquery

4 个答案:

答案 0 :(得分:1)

如果您可以使用ES6功能,则可以使用如下所示的数组方法.find

const row = myArray.find(x => x.id === y.id)

答案 1 :(得分:0)

find将返回第一个匹配的项目,因此在某些情况下会更快,因为它会在找到第一个项目后中断处理:

row = myArray.find(function(x) {
    return x.id === y.id;
})

答案 2 :(得分:0)

jQuery有一个名为$.inArray(value, array)的方法,它返回项目的索引,如果找不到,则返回-1

var index = $.inArray(y.id, myArray); // Assuming x.id is in myArray
var row = (index != -1) ? myArray[index] : -1;

答案 3 :(得分:0)

假设您需要提前退出ES5,那么您可以使用Array#some并在找到时返回true

myArray.some(function(x) {
    if (x.id === y.id) {
        row = x;
        return true;
    }
});