JavaScriptの割合による数値の配列からの参加
このようなNumberリテラルの配列があります-
const numbers = [10,6200,20,20,350,900,26,78,888,10000,78,15000,200,1280,2000,450];
数値の配列と[0,100]の間の数値を受け取る関数を作成することになっています。基本的に、この数値は特定のパーセントを表します。この数を今のところxで表します。
ここで、元の配列の最初のn個の要素のサブ配列を返す必要があります。これらの合計は、すべての配列要素の合計のx%以下です。
もっと簡単な例を見てください-
const numbers = [12, 10, 6, 8, 4, 2, 8];
この配列の合計は50であり、2番目の引数(xの値)としてたとえば25を指定すると、合計が50の25%以下になる最初のn個の要素を返す必要があります。これは実際には12.5。
したがって、この場合、2番目の要素(10)を12に追加するとしきい値(12.5)を超えるため、最初の要素のみを含む配列が返されます。
このためのコードを書いてみましょう。最初に、配列をその合計に減らすだけで、forループで、上記の基準に一致する配列を作成します-
例
const numbers = [10,6200,20,20,350,900,26,78,888,10000,78,15000,200,1280,2000,450]; const findPercent = (arr, percent) => { const sum = arr.reduce((acc, val) => acc+val); const part = []; let curr = 0; for(let i = 0; i < arr.length; i++){ curr += arr[i]; if(curr <= (sum*percent)/100){ part.push(arr[i]); } else { break; }; }; return part; }; console.log(findPercent(numbers, 35)); console.log(findPercent(numbers, 5)); console.log(findPercent(numbers, 65)); console.log(findPercent(numbers, 95));
出力
コンソールの出力は-
になります[ 10, 6200, 20, 20, 350, 900, 26, 78, 888 ] [ 10 ] [ 10, 6200, 20, 20, 350, 900, 26, 78, 888, 10000, 78 ] [ 10, 6200, 20, 20, 350, 900, 26, 78, 888, 10000, 78, 15000, 200, 1280 ]
-
JavaScript配列from()メソッド
JavaScriptのfrom()メソッドは、lengthプロパティを持つ任意のオブジェクトまたは反復可能なオブジェクトからArrayオブジェクトを返すために使用されます。 構文は次のとおりです- Array.from(obj, mapFunction, val) 上記では、パラメータobjは配列に変換するオブジェクト、mapFunctionは呼び出すマップ関数、valはmapFunctionを実行するときにこれとして使用する値です。 JavaScriptでfrom()メソッドを実装しましょう- 例 <!DOCTYPE html> <html> <body
-
JavaScript Array.from()メソッド
Array.from()は、指定された配列インスタンスから新しい配列オブジェクトを作成します。 以下は、配列from()関数のコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Docume