尝试使用数组过滤对象时失败

时间:2014-08-21 14:54:48

标签: javascript jquery arrays

我有一个对象,

$target = $('#tableA tr[data-id="' + elm.id + '"]');  // Collection of tr

我也有一个数组,

var fids = $("#tableB tr .New.selected").parent().map(function () { 
  return $(this).data("fid"); // collection of Fids
}).get();

现在我想过滤对象$target(它是tr的集合),只得到f,其中fid = fids中的任何内容

我可以尝试一个数字,但不知道我怎么能为数组做这个,这就是我想要的,

$target.filter(function() { 
  return $(this).data("fid") == 4  // HERE i want it to filter based on fids array..
});

1 个答案:

答案 0 :(得分:0)

您可以使用indexOf(),如果在数组中找不到元素,则返回-1,或者此元素在数组中的位置。

例如,如果数组是[1, 4, 7]

var fid = $(this).data("fid");
return [4, 7, 11].indexOf(fid) >= 0;

但是当使用indexOf()时,如果参数是字符串而不是数字,而数组元素是数字,则它们不会被强制执行 - 所以你需要明确地这样做:

var fid = $(this).data("fid");
return [4, 7, 11].indexOf(parseInt(fid, 10)) >= 0;

这不是问题 - 无论如何,您几乎总是使用===代替==