2017-02-01 62 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出现在阵列中的任何位置,这将无法正常工作。