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)

Vlasenko Fedor 31.08.2017 17:58

рони,
так я вроде меньше строчек написал то :lol:

рони 31.08.2017 18:15

Poznakomlus,
да похоже в данном случае эта строка не даёт никакого ускорения

рони 31.08.2017 18:17

:write:
var arr = new Array(10000).fill(1)

let threeF = arr => arr.filter(el => {
  this[el] = ++this[el] || 1;
  return 3 === this[el]
}, {})
console.time("x")
var x = threeF(arr);
console.timeEnd("x")


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("k")
var k = fn(arr,3);
console.timeEnd("k")

Vlasenko Fedor 31.08.2017 18:19

так извращаясь можно в одну строку
let threeF = arr => arr.filter(el => (this[el] = ++this[el]|| 1) &&  3 === this[el], {});

j0hnik 31.08.2017 22:36

Цитата:

Сообщение от рони (Сообщение 463264)
:write:
var arr = new Array(10000).fill(1)

let threeF = arr => arr.filter(el => {
  this[el] = ++this[el] || 1;
  return 3 === this[el]
}, {})
console.time("x")
var x = threeF(arr);
console.timeEnd("x")


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("k")
var k = fn(arr,3);
console.timeEnd("k")

Рони, друг мой, ну разве можно так проверять? :cray: :cray: :cray:

рони 01.09.2017 07:10

j0hnik,
предложи способ лучше!

j0hnik 01.09.2017 08:13

Цитата:

Сообщение от рони (Сообщение 463284)
j0hnik,
предложи способ лучше!

Просто запустите ваш последний "тест скорости" насколько раз. разброс больше чем в 100% при абсолютно идентичном коде как бэ намекает что измерительный инструмент не совсем точный.

https://jsperf.com/ - Рони вот вам отличный сервис. там даже 5% разброса не видел

рони 01.09.2017 10:10

j0hnik,
ок но в данном случае этот сервер показал фантастические результаты, когда 11 циклов быстрее одного.

j0hnik 01.09.2017 13:50

Цитата:

Сообщение от рони (Сообщение 463305)
j0hnik,
ок но в данном случае этот сервер показал фантастические результаты, когда 11 циклов быстрее одного.

Рони, знал бы я все низкоуровневые процессы, которые там происходят. :(


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