2017-02-01 101 views
-2

對不起,我新的學習JavaScript的: 我有這樣的代碼:在JavaScript計算陣列

function call(arr) { 
//i have no idea 
} 
console.log(call([1,2,3])); 

我想輸出:

//[6,3,2] 

那裏得到的結果輸出來自[(2 * 3),(1 * 3),(1 * 2)]

+1

請說明您的具體問題或添加其他詳細信息,以確切地突出顯示您的需求。正如目前所寫,很難確切地說出你在問什麼。 –

+0

你在找什麼可能被描述爲操縱數組的排列。看看http://stackoverflow.com/questions/9960908/permutations-in-javascript/37580979#37580979進行深入的討論。 – Snowmonkey

回答

1

它看起來像您希望數組中的每個值都被替換爲乘以一起的所有其他元素的值。您可以通過首先將所有數字相乘在一起,然後使用除法從任何時候只從產品中取出一個數字,並將所有其他數字的產品留在數組中,從而更高效地計算此值。

Array.prototype.reduce Array.prototype.map

function call(arr) { 
 
    var product = arr.reduce((a,b) => a * b, 1); 
 
    return arr.map(num => product/num); 
 
} 
 

 
console.log(call([1, 2, 3]));

注意,如果0出現在陣列中的任何位置,這將無法正常工作。