按字符串数组过滤javascript对象数组

Dex*_*ter 5 javascript jquery

我有一个对象数组,如下所示:

var companies = [
    { "name" : "Company 1",
      "logo" : "/logo.gif" },
    { "name" : "Company 2",
      "logo" : "/logo2.gif" },
    { "name" : "Company 3",
      "logo" : "/logo3.gif" } ];
Run Code Online (Sandbox Code Playgroud)

我想过滤此数组以仅获取具有另一个数组中存在的名称的值:

var myCompanies = [ "Company 1", "Company 3" ];
Run Code Online (Sandbox Code Playgroud)

在此示例中,要返回的数据将是:

var companies = [
    { "name" : "Company 1",
      "logo" : "/logo.gif" },
    { "name" : "Company 3",
      "logo" : "/logo3.gif" } ];
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

Nic*_*ver 7

您可以使用这样$.grep()来获取新的过滤数组

var result = $.grep(companies, function(e) { 
               return $.inArray(e.name, myCompanies) != -1;
             });
Run Code Online (Sandbox Code Playgroud)

你可以在这里测试一下.请注意,这比$.each()循环执行得更好,您可以在此处测试它:http://jsperf.com/each-vs-grep