Перебирать объект и фильтровать заданное значение в данном свойстве javascript
Я посмотрел онлайн и не смог найти подробного ответа на мой вопрос. У меня есть объект, который выглядит примерно так:
{
"00001": {
"sid": "00001",
"oid": "00001",
"name": "operation 0001 service 1",
"description": "test operation 000001",
"returntype": "something",
"parameters": {
"00001": {
"pid": "00001",
"name": "parameter 00001 operation 0001 service 1",
"description": "test parameter 000001",
"type": "something"
}
}
},
"00002": {
"sid": "00002",
"oid": "00002",
"name": "operation 0001 service 2",
"description": "test operation 000001",
"returntype": "something",
"parameters": {}
},
"00003": {
"sid": "00003",
"oid": "00003",
"name": "operation 0001 service 3",
"description": "test operation 000001",
"returntype": "something",
"parameters": {}
},
"00004": {
"sid": "00004",
"oid": "00004",
"name": "operation 0001 service 4",
"description": "test operation 000001",
"returntype": "something",
"parameters": {}
},
"00005": {
"sid": "00005",
"oid": "00005",
"name": "operation 0001 service 5",
"description": "test operation 000001",
"returntype": "something",
"parameters": {}
},
"00006": {
"sid": "00001",
"oid": "00006",
"name": "operation 0001 service 6",
"description": "test operation 000001",
"returntype": "something",
"parameters": {}
}
}
Я пытаюсь перебрать объекты и быть в состоянии вернуть те, которые имеют определенный sid (т.е. 00001). Я знаю, что в javascript есть значение для var в obj, но я не уверен, как его реализовать, чтобы получить желаемый вывод. Любая помощь или руководство будут оценены.
2 ответа
Решение
Если вы знаете, что это только один уровень глубины (совпадения "sid" будут найдены только на первом уровне объектов, и вы также не будете искать вложенные объекты), то это более просто:
function findMatches(data, prop, val) {
var item, matches = [];
for (var obj in data) {
item = data[obj];
if (item[prop] === val) {
matches.push(item);
}
}
return matches;
}
var result = findMatches(myData, "sid", "00001");
Рабочая демонстрация: http://jsfiddle.net/jfriend00/s5xg1khy/
Рекурсия - это путь. Смотрите ответ @TJ Crowder. Проходите через вложенные объекты с помощью jQuery.