| 
	| 
	
	| 
		
	| 
			
			 
			
				31.10.2020, 15:14
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 03.02.2020 
						Сообщений: 2,777
					 
		
 |  |  
	| 
	
 
	| Сообщение от Nexus |  
	| К тому же имеет, скорее всего, до двух тысяч элементов. |  
	
 Ну и какие тут проблемы с перебором? 
Я приводил пример - суммирование 10 000 000 элементов массива занимает 20 мс.
https://javascript.ru/forum/530002-post6.html |  |  
	| 
		
	| 
			
			 
			
				31.10.2020, 16:04
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 04.12.2012 
						Сообщений: 3,841
					 
		
 |  |  
	| 
	
 
	| Сообщение от voraa |  
	| Ну и какие тут проблемы с перебором? |  
	
 А с чего вы взяли, что я вижу тут какие-то проблемы? |  |  
	| 
		
	| 
			
			 
			
				31.10.2020, 17:06
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 25.10.2016 
						Сообщений: 1,013
					 
		
 |  |  
	| 
	
 
	| Сообщение от voraa |  
	| Ну и какие тут проблемы с перебором? |  
	
 Автор жалуется, что медленно   
Правда, в его случае используется map, то есть лишние расходы, но тем не менее. |  |  
	| 
		
	| 
			
			 
			
				31.10.2020, 18:31
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 03.02.2020 
						Сообщений: 2,777
					 
		
 |  |  
	| Я даже не представляю, что там может быть долго? 
Вот тест. 
100 раз выполняется просмотр массива из 10 000 элементов для поиска одинаковых
 
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-type" content="text/html; charset=utf-8" lang="ru">
  <meta name="viewport" content="width=device-width, initial-scale=1.0" >
  <title>TEST SPEED</title>
<style>
</style>
</head>
<body id="body"  >
<script>
const r = (m) => Math.random()*m | 0;
const colors = ['red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'violet'];
const ar = [];
const l = 10_000;
for (let i = 0; i < l; i++) ar.push ({color: colors[r(colors.length)], data: r(10)});
const nc = 100;
let findsame = (a, key) => {
    const res = [];
    for (let i=0; i<a.length; i++) {
        if (key.color === a[i].color && key.data === a[i].data) res.push(i);        
    }
    return res
}
const t0 = performance.now();
for (ic = 0; ic < nc; ic++) {
    const key = {color: colors[r(colors.length)], data: r(10)};
    const res = findsame(ar, key);
//    console.log(ic, res);
}
const dt = (performance.now()-t0)/1000;
alert(` Time: ${dt} seconds`);
</script>
</body>
</html>
У меня получается 6-8 мс на ноуте (довольно мощный) и 50-60 мс на не слишком навороченном смартфоне.			 Последний раз редактировалось voraa, 31.10.2020 в 19:26.
 |  |  
	| 
		
	| 
			
			 
			
				31.10.2020, 18:53
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от voraa |  
	| Последний раз редактировалось voraa, Сегодня в 18:42. |  
	
 Еще раз отредактировать, вставлен текст i <  l;   |  |  
	| 
		
	| 
			
			 
			
				31.10.2020, 18:56
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 03.02.2020 
						Сообщений: 2,777
					 
		
 |  |  
	| 
	
 
	| Сообщение от laimas |  
	| Еще раз отредактировать, вставлен текст i < l; |  
	
 Вот именно это я и редактировал. 
Ничего не помогает. 
Когда перехожу в режим редактирования там < стоит. Ну меняю < на <. Толку нет. 
Но ошибок не выдает и при раскомментаренном console.log(ic, res); результаты выдает, хотя время, конечно, другое.			 Последний раз редактировалось voraa, 31.10.2020 в 18:58.
 |  |  
	| 
		
	| 
			
			 
			
				31.10.2020, 19:14
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| Нифига себе, происки империалистов, сейчас попробуем. ) 
var a = b < c;
 
const r = (m) => Math.random()*m | 0;
const colors = ['red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'violet'];
const ar = [];
const l = 10_000;
for (let i = 0; i < l; i++) ar.push ({color: colors[r(colors.length)], data: r(10)});
const nc = 100;
 
let findsame = (a, key) => {
    const res = [];
    for (let i=0; i<a.length; i++) {
        if (key.color === a[i].color && key.data === a[i].data) res.push(i);       
    }
    return res
}
 
const t0 = performance.now();
for (ic = 0; ic < nc; ic++) {
    const key = {color: colors[r(colors.length)], data: r(10)};
    const res = findsame(ar, key);
//    console.log(ic, res);
}
const dt = (performance.now()-t0)/1000;
 
alert(` Time: ${dt} seconds`);
Нет проблем, скопировал - текст в коде, заменил - все норма. У вас клавиша < на клавиатуре решила, что так лучше будет  			 Последний раз редактировалось laimas, 31.10.2020 в 19:19.
 |  |  
	| 
		
	| 
			
			 
			
				31.10.2020, 19:27
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 03.02.2020 
						Сообщений: 2,777
					 
		
 |  |  
	| 
	
 
	| Сообщение от laimas |  
	| У вас клавиша < на клавиатуре решила, что так лучше будет |  
	
 Причем только 1 раз из трех. 
Да хрен с ней лишь бы работало.
 
	
 
	| Сообщение от laimas |  
	| скопировал - текст в коде, |  
	
 Вот это интересно. Когда я копирую текст из кода, у меня < стоит			 Последний раз редактировалось voraa, 31.10.2020 в 19:30.
 |  |  
	| 
		
	| 
			
			 
			
				31.10.2020, 19:28
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от voraa |  
	| Причем только 1 раз из трех. |  
	
 Еще и с чувством меры, значит.   |  |  |  |