Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

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
]

  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

  2. 配列の最後の要素を出力する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