0

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

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 数组中创建一个新数组,使其符合条件数组中的值。输出应如下所示:

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

根据我收集的信息,我可以使用 jquery grep。但我不知道如何正确地做到这一点。如果有人可以帮助我,我将不胜感激。我已经做了好几个小时了。

4

2 回答 2

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'};
于 2013-06-11T16:21:38.533 回答
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]
   }
}
于 2013-06-11T16:19:47.213 回答