рони,
рони, 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, время: 11:44. |