2017-04-21 10 views
-1

私はいくつかのパラメータ(整数または文字列)をとり、特定の操作を実行する作業関数を持っています。その非常に基本的な形での例を参照してください。JavaScriptで配列または配列を使用して関数に複数の引数を渡す

var myFunc = function(a,b,c){ 
    return a * b * c; 
} 
function(1,2,3); 

この機能は、大量のか、データを操作するために使用され、代わりにまたは下記のように機能を実行している:

function(1,2,3); 
function(2,3,4); 
function(5,8,7); 
function(8,9,0); 
function(5,3,2); 
... 

私が見つけるしたいと思います配列(またはオブジェクト)の配列を渡して、配列からのデータで関数を1回だけ実行する方法です。

私はアルゴリズムに取り組み始めましたが、わかりません。あなたは下のコードを見て、完了を示唆してください。

var myFunc = function(arr){ 
    arr.forEach(function(item, index){ 
    for(var i = 0; i < item.length; i++){ 
     // some magic 
    } 
    }) 
} 
myFunc([[5,7,3],[2,3,4],[2,3,9]]); 

事前に感謝します。

+0

は、だからあなたは[105、24、54] ''を返すことになっていますか? – Li357

+0

いいえ、複数回実行する必要があり、毎回各配列から値が返されます。 例: myFunc([[5,7,3]、[2,3,4]、[2,3,9]]); //返品: 1)105 2)24 4)54 –

+0

何ですか?関数は一度しか返すことができません...あなたが望むのは私が記述したものです – Li357

答えて

1

あなたは引数を使用する必要があります代わり編曲:

var myFunc = function(){ 
    arguments.forEach(function(item, index){ 
    for(var i = 0; i < item.length; i++){ 
     // some magic 
    } 
    }) 
} 
myFunc([5,7,3],[2,3,4],[2,3,9]); 
+0

私はこれについても考えており、1つの配列main arrを取り除くことができます。提案していただきありがとうございます。 –

+0

** [] **は私のコードのように見えます。... – HoangHieu

+0

'[... arguments]'を再確認してください。 –

0

のこれは、配列の各セットを乗算し、製品(105,24,54)の配列を返します。

var myFunc = function(arr){ 
    var products = new Array(); 
    arr.forEach(function(item, index){ 
    var subtotal = 1; 
    for(var i = 0; i < item.length; i++){ 
     // some magic 
     subtotal *= item[i]; 
    } 
    products[index] = subtotal; 
    }); 
    return products; 
} 
myFunc([[5,7,3],[2,3,4],[2,3,9]]); 
0

外部配列をマップするには、内部配列に連続する数値を掛けて減らします。

const myFunc = arr => arr.map(xs => xs.reduce((a, b) => a * b, 1)) 
 

 
console.log(
 
    myFunc([[5,7,3],[2,3,4],[2,3,9]]) 
 
)

関連する問題