jquery - 过滤多维数组

时间:2013-06-11 16:14:57

标签: javascript jquery

我有一个像这样的多维数组:

var allObj = {'@DB M-T 1@': 'DB More Than 1','@ES L-T 5@': 'ES Less Than 5','@MM E-Q 0@': 'MM Equal 0'};

我有这样的标准:

var criteriaArray = {'DB More Than 1','MM Equal 0'};

我想从allObj数组中创建一个新数组,以便它满足criteriaArray中的值。输出应如下所示:

var matchObj = {'@DB M-T 1@': 'DB More Than 1','@MM E-Q 0@': 'MM Equal 0'};

从我收集的内容中,我可以使用jquery grep。但我无法弄清楚如何正确地做到这一点。如果有人能帮助我,我将不胜感激。我已经在这几个小时了。

2 个答案:

答案 0 :(得分:2)

这是一个迭代解决方案:

var allObj = {'@DB M-T 1@': 'DB More Than 1','@ES L-T 5@': 'ES Less Than 5','@MM E-Q 0@': 'MM Equal 0'};
var criteriaArray = ['DB More Than 1','MM Equal 0'];
var matchObj = {};
for(var key in allObj) {
  var value = allObj[key];
  for(var i=0; i<criteriaArray.length; i++) {
    var criteria = criteriaArray[i];
    if(value==criteria) {
      matchObj[key] = value;
      break;
    }
  }
}
console.log(matchObj);//{'@DB M-T 1@': 'DB More Than 1','@MM E-Q 0@': 'MM Equal 0'};

答案 1 :(得分:0)

您似乎想要按其值过滤对象(不是数组)的属性。

最简单的方法是:

var criteriaArray = ['DB More Than 1','MM Equal 0']; // your syntax was bad
var matchObj = {}; // resulting object
for (var key in allObj) {
   if (criteriaArray.indexOf(allObj[key]) !== -1) {
       matchObj[key] = allObj[key]
   }
}