Чтобы не перебирать массив каждый раз нужно рядом хранить объект - карту массива по нужному полю, как аналог индекса в базе данных. Но нужно заботиться об актуальности такого индекса, добавлять и удалять от туда данные при изменении массива.
var arr = [
{id: 0, name: 'aaa'},
{id: 1, name: 'ccc'},
{id: 2, name: 'bbb'},
{id: 3, name: 'ccc'},
{id: 4, name: 'bbb'},
];
arr.mapNames = arr.reduce( (map, obj, i)=> {
if(obj.name in map)
map[obj.name].push(i);
else
map[obj.name] = [i]
return map;
}, Object.create(null) );
var bbb = ( arr.mapNames['bbb'] || [] ).map( i => arr[i] );
/* Получим [ { id: 2, name: 'bbb' }, { id: 4, name: 'bbb' } ] */