Показать сообщение отдельно
  #1 (permalink)  
Старый 18.06.2013, 23:02
Аспирант
Отправить личное сообщение для Lynatik Посмотреть профиль Найти все сообщения от Lynatik
 
Регистрация: 11.09.2012
Сообщений: 35

Поиск объектов в массиве
Доброго времени суток всем.
Подвернулось задание- Имеется массив с объектами, имеющими поле «id» с уникальными значениями в пределах этого массива. Требуется искать объекты в этом массиве, имеющие определенное значение «id». Плюсы и минусы.

Самый очевидный способ(тупо перебрать массив до попадания) я сделал. Сначала для теста массив создал.
function Obj(id){
	this.id = id
}

var arr = [];

for (var j = 0; j < 5000000; j++){
	var obj = new Obj(j);
	arr.push(obj);	
}

var init="time";
const FINDID = 4999999;

function findEl(array) {
	for (var i = 1; i < (array.length + 1); i++){
		if (array[i].id == FINDID){
			console.log ("this is " + i + " element");
			break
		}
	}
}
console.time(init);
findEl(arr);
console.timeEnd(init);


Написал, что если большое количество объектов, то поиск возможно долгий будет. По времени функция такая ~120.000ms выполняется.

НО. Какие варианты еще есть? Может кто поможет?

Может еще взять все объекты из массива, склеить их в строку, разделяя чем- нибудь, типа (obj1.id тут уже строковая будет)
var str = "obj1.id#obj2.id#и так далее";


и потом уже искать в строке. Но это порнография какая- то уже получается, да и, наверняка долго будет.
Я новичок в программировании, особо не хайте
Спасибо огромное тому, кто наведет на путь истинный
Ответить с цитированием