Интересно, есть ли более элегантный способ сделать это. Предположим, у меня есть массив объектов, как это:Javascript: фильтр массив объектов по массиву строк
a = [
{
"id": "kpi02",
"value": 10
},
{
"id": "kpi02",
"value": 30
},
{
"id": "kpi02",
"value": 11
},
{
"id": "kpi02",
"value": 33
},
{
"id": "kpi03",
"value": 1
},
{
"id": "kpi03",
"value": 0.5
},
{
"id": "kpi04",
"value": 0.5
}
]
Теперь я хочу, чтобы фильтровать по id
собственности, чтобы вернуть все объекты с матча в другом массиве
var kpis = ["kpi03", "kpi02"];
я пришел с этим решением :
var b = [];
for (j in kpis) {
for (i in a) {
if (a[i].id == kpis[j]) {
b.push(a[i]);
}
}
}
Исходя из R, это кажется немного сложным, есть ли способ сделать это с filter
прототипа? Как это, но с массивом строк для сравнения вместо одной строки:
var b = a.filter(function(item){return (item.id == "kpi03");});
Спасибо большое!
Благодарим за быстрый ответ и пример! Я знал, что должно быть более элегантное решение :) – Schw4rz