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

JavaScriptでターゲットに追加するための任意の可能な組み合わせ


問題

最初の引数として一意の整数の配列arrを取り、2番目の引数としてターゲットの合計を受け取るJavaScript関数を作成する必要があります。

この関数は、ターゲットの合計に加算してそのカウントを返すことができるすべてのペアの数をカウントする必要があります(繰り返しが許可されています)。

たとえば、関数への入力が-

の場合
const arr = [1, 2, 3];
const target = 4;

その場合、出力は-

になります。
const output = 7;

出力の説明:

なぜなら、可能な組み合わせの方法は-

(1, 1, 1, 1)
(1, 1, 2)
(1, 2, 1)
(1, 3)
(2, 1, 1)
(2, 2)
(3, 1)

このためのコードは-

になります
const arr = [1, 2, 3];
const target = 4;
const sumUpto = (nums = [], target = 1, map = {}) => {
   if (target === 0){
      return 1;
   };
   if (typeof map[target] != "undefined"){
      return map[target];
   };
   let res = 0;
   for (let i = 0; i<nums.length; i++) {
      if (target >= nums[i]){
         res += sumUpto(nums, target - nums[i], map);
      };
   };
   map[target] = res;
   return res;
};
console.log(sumUpto(arr, target));

出力

そして、コンソールの出力は-

になります
7

  1. JavaScriptのnew.target

    new.targetは、関数コンストラクターがnewキーワードを使用して呼び出されたかどうかを実行時に判別できるようにするメタプロパティです。 以下は、JavaScriptのnew.targetのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=

  2. すでに宣言されている変数に構造を解除することは可能ですか? JavaScriptでは?

    以下は、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> &