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)

j0hnik 31.08.2017 13:58

рони,
рони, 6 строчка необязательна

рони 31.08.2017 14:33

Цитата:

Сообщение от j0hnik
рони, 6 строчка необязательна

снова ой :)
var arr = new Array(10000).fill(1)
function threeSix(arr){
return arr.filter((el, i)=> {
var s = 0;
while (i--) {
    if (el == arr[i]) s++;
    if (s > 2)return false
}
return s == 2;
});
}
console.time("x")
var x = threeSix(arr);
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 == 2;
});
}

console.time("k")
var k = three(arr);
console.timeEnd("k")
alert(k);

j0hnik 31.08.2017 14:34

https://jsperf.com/fdgd5t
Рони друг мой
var arr = [], i=1000;
while(i--) arr.push(Math.floor(Math.random() * 1000));

function three(arr){
return arr.filter((function() {
var c = {};
return function(el) {
c[el] = (c[el] || 0) + 1;
return c[el] == 3;
};
})());
}
console.log(three(arr));


Рвет твою :p

рони 31.08.2017 14:50

Цитата:

Сообщение от j0hnik
Рвет твою

смотрите пост №26

рони 31.08.2017 15:01

j0hnik,
не увидел что вариант "новый"

j0hnik 31.08.2017 15:04

рони,
Рони от условий тоже зависит,
вариант не мой, вконтакте нашел.

рони 31.08.2017 15:11

j0hnik,
спасибо никак не мог вспомнить это
c[el] = (c[el] || 0) + 1;

:thanks:
(b[a]++ || (b[a] = 1))

Vlasenko Fedor 31.08.2017 17:41

let threeF = arr => arr.filter(el => {
  this[el] = ++this[el] || 1;
  return 3 === this[el]
},{})

вариант :dance:

рони 31.08.2017 17:42

Poznakomlus,
:write: this[el] = ++this[el] || 1; записал

рони 31.08.2017 17:51

Poznakomlus,
а если так?
let threeF = arr => arr.filter(el => {
  if(this[el] === 3) return false;
  this[el] = ++this[el] || 1;
  return 3 === this[el]
}, {})


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