рони,
рони, 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);
|
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 |
Цитата:
|
j0hnik,
не увидел что вариант "новый" |
рони,
Рони от условий тоже зависит, вариант не мой, вконтакте нашел. |
j0hnik,
спасибо никак не мог вспомнить это c[el] = (c[el] || 0) + 1; :thanks: (b[a]++ || (b[a] = 1)) |
let threeF = arr => arr.filter(el => {
this[el] = ++this[el] || 1;
return 3 === this[el]
},{})
вариант :dance: |
Poznakomlus,
:write: this[el] = ++this[el] || 1; записал |
Poznakomlus,
а если так?
let threeF = arr => arr.filter(el => {
if(this[el] === 3) return false;
this[el] = ++this[el] || 1;
return 3 === this[el]
}, {})
|
| Часовой пояс GMT +3, время: 19:04. |