2017-02-01 3 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 появляется где-нибудь в массиве.

Смежные вопросы