2015-06-30 4 views
0

Для примера позволяет иметь следующий объект:Угловой/Javascript поиск массива для объекта ключа

var myobj = {id: 1, text: 'hello world', user_id: 5} 

Теперь позволяет сказать, что мы имеем массив:

var objectContainer = [] 

И мы заполняем этот ObjectContainer с х количество myobj

Теперь мы хотим найти myobj, который имеет значение id набор для 30

Вы можете использовать цикл, но в худшем случае вам нужно будет пройти через весь массив, прежде чем находить свое значение.

Так что у меня вопрос JaVaScript есть функция для этих ситуаций или AngularJs Предоставить дополнительные помощники, чтобы решить эту проблему?

+2

см. [Фильтр] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) – Hacketo

+0

@Hacketo это можно использовать для извлечения элемента в контроллере/оказание услуг? –

ответ

1

У вас есть много различных решений:

  1. Javascript FIND: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find Пример: var myobject = objectContainer.find(function(value){ return value.id === 1; });

  2. Угловой фильтр: https://docs.angularjs.org/api/ng/filter/filter

  3. Если ваши идентификаторы уникальны вы можете также используйте карту вместо массива:

Exemple:

var myobj = {id: 1, text: 'hello world', user_id: 5}; 

var objectContainer = {}; 

objectContainer[myobj.id] = myobj; 

и т.д.

+0

'find' is es6. Также вы должны предоставить английские ссылки на StackOverflow. – Hacketo

+0

Действительно, вы все же можете обеспечить реализацию 'find'. –

0

Ваше значение 'x' является индексом массива. Поэтому objectContainer [29] должен указывать на myobj в 30-й позиции.

+0

Да, это было бы верно, если бы вы поместили их в кронологическом порядке, но если вы поместите их в случайном порядке, это не будет –

+0

попробуйте Array.findIndex («что вы хотите найти»), – Nikki

0

Также вы можете использовать my solution поиска объектов в массиве. Но все же он будет охватывать все элементы массива.

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