Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как проверить что 3 элемента массива повторяются (https://javascript.ru/forum/misc/70362-kak-proverit-chto-3-ehlementa-massiva-povtoryayutsya.html)

рони 31.08.2017 02:16

j0hnik,
ок, но циклов много

j0hnik 31.08.2017 02:24

Цитата:

Сообщение от рони (Сообщение 463186)
j0hnik,
ок, но циклов много

Если можно сделать шустрей этой, напишите. =)

рони 31.08.2017 02:32

j0hnik,
один цикл
var arr = [9, 9, 9, 111, 5, 2,  3, 4, 4, 5, 5, 5, 7];
function fn(d, e) {
    for (var f = [], b = {}, a, c = 0; c < d.length; c++)
    a = d[c], b[a] >= e || (b[a]++ || (b[a] = 1), b[a] >= e && f.push(a));
    return f
};
alert(fn(arr, 3));

j0hnik 31.08.2017 08:15

рони,
Один цикл, но все равно работает медленней чем моя :p

рони 31.08.2017 11:53

j0hnik,
где тест?
и если не трудно сделайте ещё на 10000 одинаковых элементов
и for можно поменять на while или reduce

рони 31.08.2017 12:07

Цитата:

Сообщение от j0hnik
но все равно работает медленней чем моя

ой и это ещё не предел
var arr = new Array(10000).fill(1);
function fn(d, e) {
    for (var f = [], b = {}, a, c = 0; c < d.length; c++)
    a = d[c], b[a] == e || (b[a]++ || (b[a] = 1), b[a] == e && f.push(a));
    return f
};
console.time("x")
var x = fn(arr, 3);
console.timeEnd("x")
alert(x);
function three(arr){
return arr.filter((el, i)=> {
var s = 0;
while (i--) if (el == arr[i]) s++;
return (s>1&&s<=2);
});
}
console.time("k")
var k = three(arr);
console.timeEnd("k")
alert(k);

j0hnik 31.08.2017 12:17

Цитата:

Сообщение от рони (Сообщение 463208)
j0hnik,
где тест?
и если не трудно сделайте ещё на 10000 одинаковых элементов
и for можно поменять на while или reduce

https://jsperf.com/fgfdgertrt

на 10 000 одинаковых? :blink: откуда такие числа
может на 10 000 разных?
for на while шило на мыло, они одинаковые по скорости

j0hnik 31.08.2017 12:35

Цитата:

Сообщение от рони (Сообщение 463208)
j0hnik,
где тест?
и если не трудно сделайте ещё на 10000 одинаковых элементов
и for можно поменять на while или reduce

я понял о чем вы, если много одинаковых то ваш быстрей.

рони 31.08.2017 12:43

j0hnik
можно тест где ваш код быстрее?

j0hnik 31.08.2017 12:47

рони,
https://jsperf.com/fgfdgertrt


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