j0hnik,
ок, но циклов много |
Цитата:
|
j0hnik,
один цикл var arr = [9, 9, 9, 111, 5, 2, 3, 4, 4, 5, 5, 5, 7]; 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 }; alert(fn(arr, 3)); |
рони,
Один цикл, но все равно работает медленней чем моя :p |
j0hnik,
где тест? и если не трудно сделайте ещё на 10000 одинаковых элементов и for можно поменять на while или reduce |
Цитата:
var arr = new Array(10000).fill(1); 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("x") var x = fn(arr, 3); 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>1&&s<=2); }); } console.time("k") var k = three(arr); console.timeEnd("k") alert(k); |
Цитата:
на 10 000 одинаковых? :blink: откуда такие числа может на 10 000 разных? for на while шило на мыло, они одинаковые по скорости |
Цитата:
|
j0hnik
можно тест где ваш код быстрее? |
|
Часовой пояс GMT +3, время: 01:17. |