我有一个像这样的多维数组:
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。但我无法弄清楚如何正确地做到这一点。如果有人能帮助我,我将不胜感激。我已经在这几个小时了。
答案 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]
}
}