Kozack
@Kozack
Thinking about a11y

Как сделать поиск по массиву объектов на javascript?

Есть довольно большой массив такой структуры:
var arr = [{
    id:5,
    name:'Tony'
},{
    id:207,
    name:'Ann'
},{
    id:33,
    name:'Alex'
}];

Как получить из него объект пользователя по его ID?
user = SomeFunction(207);
user.name; // Ann


UPD. Как смотрите на такой подход?
arr.forEach(function(user){
		profiles[user.id] = user;
	},this);
	profiles[207].name; // Ann
  • Вопрос задан
  • 237 просмотров
Решения вопроса 2
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Используем Array#some

console.log(getElement(207).name);

function getElement (value) {
	var x;

	arr.some(function (element, index, array) {
		if (element.id == value) {
			x = element;
			return true;
		}

		return false;
	});
	return x;
}

Пример
Ответ написан
Комментировать
mrquake
@mrquake
Абырвалг
var arr = [{
    id:5,
    name:'Tony'
},{
    id:207,
    name:'Ann'
},{
    id:33,
    name:'Alex'
}];


function searchUser (arr,num) {

  for (var i in arr) {
    if (arr[i].id == num) {
      return arr[i];
    }
  }
}

searchUser(arr, 5)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@philipb
js-developer
underscorejs.org/#where
var result = _.where(arr, {id:207});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы