JavaScriptの最後の要素から逆算して配列Aから配列Bを取得するための正しいアルゴリズムは何でしょうか?
次のバイナリ配列(配列A)を考えてみましょう-
const arr = [1,0,1,1,1,1,0,1,1];
この配列が関数、たとえばsumRight()を通過すると、次の出力配列(配列B)-
が生成されます。const output = [1,0,4,3,2,1,0,2,1];
機能を理解する
配列arrの要素は、0または1のいずれかになります。関数は配列arrの最後の要素から逆方向にカウントします。配列arrに連続する1がある場合、出力配列の対応する要素は1になりますが、配列arrの2番目に連続する1の場合、2になります。3番目の入力配列の場合、出力配列の要素は3になりますが、配列arrの0の場合、出力配列でも0になります。
それでは、Array.prototype.reduceRight()メソッドを使用してこの関数のコードを記述しましょう。これは、通常のreduceメソッドと同じ動作を行い、左ではなく右から開始します-
例
const arr = [1,0,1,1,1,1,0,1,1]; const sumRight = arr => { return arr.reduceRight((acc, val) => { const { prev, res } = acc; if(val === 0){ return { prev: 0, res: res.concat(0) }; }; return { res: res.concat(val+prev), prev: prev+1 }; }, { prev: 0, res: [] }).res.reverse(); }; console.log(sumRight(arr));
出力
コンソールの出力は-
になります[ 1, 0, 4, 3, 2, 1, 0, 2, 1 ]
-
JavaScript-スパン要素のテキストを取得します
JavaScriptでspan要素のテキストを取得するには、コードは次のとおりです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style&g
-
配列の最後の要素を出力するJavaScriptコード
以下は、配列の最後の要素を出力するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> bod