JavaScript-値のグループをシーケンスから削除できるすべての可能な方法を決定します
シーケンスから値のグループを削除し、元のシーケンスを順番に(安定して)残し、元のシーケンスからそれぞれ1つのインスタンス値のみを削除する方法を決定するJavaScript関数を作成する必要があります。
例-シーケンス配列が-
の場合const arr = [1, 2, 1, 3, 1, 4, 4];
そして、削除される配列は-
const arr2 = [1, 4, 4];
次に、要素の順序を乱すことなくこれを行うための3つの可能な方法があります-
1 --> [2, 1, 3, 1] 2 --> [1, 2, 3, 1] 3 --> [1, 2, 1, 3]
したがって、関数はこれらのシーケンスに対して3を出力する必要があります。このためのコードは-
になります例
const arr = [1, 2, 1, 3, 1, 4, 4]; const arr2 = [1, 4, 4]; const possibleRemovalCombinations = (original, part) => { const sorter = (a, b) => a - b; part.sort(sorter); let place = []; part.forEach(el => { place[el] = [] }); original.forEach((el, index) => { if(place[el]){ place[el].push(index); } }); let connection = part.map(el => place[el].slice()); for(let i = 1; i < connection.length; i++){ if (part[i - 1] != part[i]){ continue; } let left = connection[i - 1][0]; while(connection[i][0] <= left){ connection[i].shift(); }; }; for (let i = connection.length - 2; i >= 0; i--) { if(part[i] != part[i + 1]){ continue; } let right = connection[i + 1][connection[i + 1].length - 1]; while(connection[i][connection[i].length - 1] >= right){ connection[i].pop(); }; }; const combineArray = (step, prev, combination) => { for (let i = 0; i < connection[step].length; i++) { let curr = connection[step][i]; if(prev >= curr && original[prev] == original[curr]){ continue; } if(step + 1 == connection.length){ combinations.push(combination.concat([curr])) } else { combineArray(step + 1, curr, combination.concat([curr])); }; }; }; let combinations = [], res = []; combineArray(0, -1, []); for (let i = 0; i < combinations.length; i++) { let copy = original.slice(); combinations[i].forEach(el => copy[el]); res[i] = copy.filter(el => el !== undefined); }; return res.length; }; console.log(possibleRemovalCombinations(arr, arr2));
出力
そして、コンソールの出力は-
になります3
-
JavaScriptで文字列を分割する方法はいくつありますか?
JavaScriptでは、分割できます 3つの方法で文字列。 1つは、 string.split()の古い方法です。 メソッドが使用され、後でES6は文字列を分割する2つの方法を提供しました。最初の方法でスプレッド演算子 が使用され、2番目の方法で array.from() メソッドが使用されます。それらについて詳しく説明しましょう。 String.split() 構文 string.split(); 例 次の例では、 string.split() メソッドは、提供された文字列を個々の文字に分割するために使用されます。 <html> <body>
-
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> &