2016-03-29 2 views
0

В JavaScript У меня есть массив объектов:Фильтрующие элементы в массиве объектов

var errors = [ 
    { code: 35, name: "Authentication" }, 
    { code: 34, name: "Validation" } 
] 

Что такое лучший вариант для многократного использования функции, которая проверяет, если и массив этого типа имеет элемент с кодом == XYZ ? Если он затем возвращает массив со всеми этими элементами.

+0

Рассматривали ли вы задаете поисковик для «Фильтр элементов в массиве объектов» ?? Или, ну, stackoverflow ?! – fast

ответ

4

Вы можете сделать это с Array.prototype.filter()

var errors = [ 
    { code: 35, name: "Authentication" }, 
    { code: 34, name: "Validation" } 
] 

var result = errors.filter(itm => itm.code == "xyz"); 

Приведенный выше код будет отфильтровывать объекты, имеет свойство code со значением "xyz" в новом массиве result

1

Использование filter:

var errors = [ 
    { code: 35, name: "Authentication" }, 
    { code: 34, name: "Validation" } 
] 

var find = function(code) { 
    return errors.filter(function(i) { return i.code === code }) 
} 

find(34) // [{ code: 34, name: "Validation" }] 

См. this fiddle

0

Вы можете попробовать что-то вроде этого:

Array.prototype.findByValueOfObject = function(key, value) { 
 
    return this.filter(function(item) { 
 
    return (item[key] === value); 
 
    }); 
 
} 
 

 
var errors = [ 
 
    { code: 35, name: "Authentication" }, 
 
    { code: 34, name: "Validation" } 
 
]; 
 

 
print(errors.findByValueOfObject("code", "xyz")); 
 
print(errors.findByValueOfObject("code", 35)); 
 
print(errors.findByValueOfObject("name", "Validation")); 
 

 
function print(obj){ 
 
    document.write("<pre>" + JSON.stringify(obj,0,4) + "</pre><br/> ----------"); 
 
}

Смежные вопросы