Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как получить определенный объект из массива объектов? (https://javascript.ru/forum/misc/72522-kak-poluchit-opredelennyjj-obekt-iz-massiva-obektov.html)

Rmydar 04.02.2018 16:34

Как получить определенный объект из массива объектов?
 
Всем привет! Так как я не силен в javascript нужна ваша помощь. Не подскажите как получить объект из массива объектов по одному из его свойств?

рони 04.02.2018 16:52

Rmydar,
https://javascript.ru/forum/misc/724...tml#post476834

Rmydar 04.02.2018 17:09

Прикольно только как это мне поможет? У меня есть массив объектов, каждый объект имеет свойство id со своим значением, мне нужно получить объект с нужным мне id из этого массива. Пробовал циклом не выходит:
for (var i=0, iLen=arr.length; i<iLen; i++) {
  if (arr[i].id === id) {
	object = arr[i];
  } else {
	object = "Value not found";
  }
}
console.log(object);

У меня всегда "Value not found", я не силен в javascript, ну может кто подскажет что я делаю не так?

KonstBessonov 04.02.2018 17:30

В твоем случае нужно после найденного совпадения делать break.

var object = "Value not found";
for (var i=0, iLen=arr.length; i<iLen; i++) {
  if (arr[i].id === id) {
	object = arr[i];
	break; // <----
  }
}
console.log(object);


Ну лучше использовать find из массива https://developer.mozilla.org/en-US/...cts/Array/find

var object = arr.find(function(elem) {
  return elem.id === id;
}
console.log(object);

Rmydar 04.02.2018 18:09

Странно но не выходит не так не так… При этом если в консоль вывести один объект, и значение переменной id, то и значение свойства id объекта, и значение переменой id равны, но результат сравнения дает ложь. Скажите пожалуйста javascript сильно типизированный язык, так как значение переменной id я получаю из тега, и если я правильно понимаю оно имеет строковое значение, значение в массиве числовое, в этом может быть проблема?

Rmydar 04.02.2018 18:16

Блин оператор, ну как же так я лоханулся, всю голову сломал, Сори ребят что отнял у вас время...


Часовой пояс GMT +3, время: 16:48.