私が書いた各配列関数のこの最大のforループを避ける方法があるかどうかは、ES6(私はかなり新しくES6に慣れています)を使って私のアルゴリズム知識を改善していますか?forループを回避する方法はありますか? (ES6/JavaScript)
function largestEach(arr) {
for(const [i,v] of arr.entries())
arr[i] = v.sort((a,b) => b - a).filter((e,i) => i === 0);
return arr.reduce((a,b) => a.concat(b));
}
largestEach([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
コンソールログ:[5, 27, 39, 1001]
が正しいです。
私はそれを使用している実際のユースケースがないので、概念的です。私は、私のより良い選択肢がES6(または一般的にJS)にあったかどうか不思議なループには反対していません。純粋に不思議!
'arr.map返す(V => Math.maxを(。 ..v)); ' – 4castle
私は@ 4castleと同じものを思いついた。いずれかの内部配列が空であれば、 '-Infinity'の結果が得られます。これは、その場合の質問の関数よりも優れています(出力が空の配列を単にスキップして、入力とは異なる長さの配列)。 – nnnnnn
@ 4castleだから...普及構文は基本的にそのサブ配列を展開し、最大値だけを返す...興味深い! – simplexity