Это ваш объект.
var jsonObj = {
"groups": [
{
"group_id": "8",
"group_name": "Building",
"group_color": "00ff00"},
{
"group_id": "3",
"group_name": "Building",
"group_color": "8000ff"},
{
"group_id": "2",
"group_name": "Sidewalk",
"group_color": "ff0000"},
{
"group_id": "6",
"group_name": "Parking Lot",
"group_color": "00ffff"},
{
"group_id": "3",
"group_name": "Commons",
"group_color": "ff8000"},
{
"group_id": "5",
"group_name": "Other",
"group_color": "ff00ff"}
]
};
Эта функция проверяет, что свойства вашего объекта удовлетворяют
регулярные выражения, определенные в regsObj.
/**
* Check that an obejct matches all the
* regexp defined in the regsObj
*/
var matchRegObj = function(obj, regsObj) {
var matched = false,
regExp;
for (var propName in regsObj) {
regExp = regsObj[propName];
matched = regExp.test(obj[propName]);
if (matched !== true) {
break;
}
}
return matched;
};
Функциональный тест вернет ваш соответствующий объект.
/**
* Return the first object matching all the regexp rule
* defined in the regsObj.
*/
var test = function(jsonObj, regsObj) {
var matched = false,
obj;
for (var i = 0; i < jsonObj.groups.length && !matched; i++) {
obj = jsonObj.groups[i];
matched = matchRegObj(obj, regsObj);
}
return (matched) ? obj : {};
};
В regsObject вы определяете reg-exps, которым должен удовлетворять искомый объект в списке групп.
/**
* regsObj is only a container of propertyName and regexp used to query the right object.
*/
var regsObj = {
"group_id" : "10",
"group_name" : "Building"
};
Поиск вашего объекта таким образом.
/**
* @param {Object} jsonObjyour Your json Object.
* @param {Object} regObj The object holding all the regular expressions.
* @return {Object} your matching object
*/
var result = test(jsonObj, regsObj);
console.dir(result);