|
|
Да, просто замени весь шаблон на этот:
|

31.08.2017, 13:58
|
 |
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
|
рони,
рони, 6 строчка необязательна
|
|

31.08.2017, 14:33
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,156
|
|
|
Сообщение от 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);
|
|

31.08.2017, 14:34
|
 |
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
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));
Рвет твою 
|
|

31.08.2017, 14:50
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,156
|
|
|
Сообщение от j0hnik
|
|
Рвет твою
|
смотрите пост №26
|
|

31.08.2017, 15:01
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,156
|
|
|
j0hnik,
не увидел что вариант "новый"
|
|

31.08.2017, 15:04
|
 |
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
|
рони,
Рони от условий тоже зависит,
вариант не мой, вконтакте нашел.
|
|

31.08.2017, 15:11
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,156
|
|
j0hnik,
спасибо никак не мог вспомнить это
c[el] = (c[el] || 0) + 1;
(b[a]++ || (b[a] = 1))
|
|

31.08.2017, 17:41
|
 |
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
let threeF = arr => arr.filter(el => {
this[el] = ++this[el] || 1;
return 3 === this[el]
},{})
вариант 
Последний раз редактировалось Vlasenko Fedor, 31.08.2017 в 17:44.
|
|

31.08.2017, 17:42
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,156
|
|
Poznakomlus,
 this[el] = ++this[el] || 1; записал
|
|

31.08.2017, 17:51
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,156
|
|
Poznakomlus,
а если так?
let threeF = arr => arr.filter(el => {
if(this[el] === 3) return false;
this[el] = ++this[el] || 1;
return 3 === this[el]
}, {})
|
|
|
|