有没有更好的方法来编写以下用于过滤的JS代码?从数组中返回项目;
myArray.forEach(function(x) {
if (x.id === y.id) {
row = x;
}
})
我愿意使用jquery
答案 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;
}
});