从另一个数组中过滤数组

时间:2016-03-04 13:42:22

标签: knockout.js

我有一个数组:

self.helpers = [
       { name: ' abc ', helper: ' my helper text1 ' },
       { name: ' def ', helper: ' my helper text2 ' },
       { name: ' xyz ', helper: ' my helper text3 ' }
];

如果我有一个字符串var testdata = 'abc',我可以使用ko.utils.arrayFilter来获取包含self.helpers name等于'abc'的对象的json数组。< / p>

但如果我有一个字符串数组,我该如何过滤self.helperstestdata=[' abc ',' def ']

我应该得到如下结果:

[{ name: ' abc ', helper: ' my helper text1 ' },
 { name: ' def ', helper: ' my helper text2 ' }];

knockoutjs与sql中的IN有什么相似之处吗? jQuery有in_array,但在这种情况下如何使用它,而且:它是最好的方法吗?

1 个答案:

答案 0 :(得分:0)

不需要特殊的Knockout(或jQuery)代码,这可以轻松使用vanilla Javascript完成。这是我的建议,使用indexOf

'drain'
var helpers = [
   { name: ' abc ', helper: ' my helper text1 ' },
   { name: ' def ', helper: ' my helper text2 ' },
   { name: ' xyz ', helper: ' my helper text3 ' }
];

var testdata = [' abc ',' def '];

var result = helpers.filter(function(h) {
  return testdata.indexOf(h.name) >= 0;
});

// for demo:
document.getElementById("x").innerHTML = JSON.stringify(result, null, 2);

顺便说一下,jQuery's inArray function在其实施中使用相同的东西,目前归结为:

<pre id="x"></pre>