Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Возведение в куб число и массив числовых значений используя функцию (https://javascript.ru/forum/misc/69727-vozvedenie-v-kub-chislo-i-massiv-chislovykh-znachenijj-ispolzuya-funkciyu.html)

Tanya51 14.07.2017 21:14

Возведение в куб число и массив числовых значений используя функцию
 
Есть такая задача:
Напишите функцию extraCube, которая принимает в качестве параметра или число, или массив числовых значений и возвращает либо куб числа, либо массив кубов, в зависимости от типа входящего параметра (typeof). Для расчета куба числа вместо встроенного метода Math.pow используйте собственную функцию.
console.log( extraCube(2) ); // 8
console.log( extraCube([0, 1, 2, 3]) ); // [0, 1, 8, 27]

как число возвести в куб я разобралась:
function square(x) {
return x*x;
}
function extraCube(x) {
return x*square(x);
}

либо так

function extraCube(x) {
return x*x*x;
}
console.log( extraCube(2) );


а вот с массивом чисел не понятно как это можно сделать. Причем для числа и массива чисел это должна быть одна функция.
Помогите пожалуйста

EmperioAf 14.07.2017 21:19

function toCube(x /* number */) {
    return x*x*x;
}

function extraCube(x /* number | Array<number> */) {
    if(x instanceof Array) return x.map(toCube); // [url]https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/map[/url]
    return toCube(x);
}

Tanya51 14.07.2017 21:23

а можете мне расписать как оно работает?)

Tanya51 14.07.2017 21:43

кажется разобралась
Я правильно понимаю, что функция extraCube нам посчитает массив,а toCube - числа?
И если наши числа это не массив, то сработает return toCube(x);?

j0hnik 14.07.2017 22:45

var extraCube =(x) => x = x===0||+x ? x*x*x : x.map((x) => x*x*x);

рони 14.07.2017 23:10

j0hnik,
Цитата:

Сообщение от Tanya51
принимает в качестве параметра или число, или массив

Цитата:

Сообщение от Tanya51
возвращает либо куб числа, либо массив кубов


Tanya51 14.07.2017 23:29

спасибо

j0hnik 14.07.2017 23:44

Цитата:

Сообщение от рони (Сообщение 458537)
j0hnik,

var extraCube =(x) => x = x==0||+x ? x*x*x : x.map((x) => x*x*x);
console.log(extraCube([2,2]));
console.log(extraCube(2));


рони, да и массив и число можно.

рони 15.07.2017 00:06

Цитата:

Сообщение от j0hnik
+x

так нельзя проверять массив ли это?
поэтому лучше
Цитата:

Сообщение от EmperioAf
if(x instanceof Array)


j0hnik 15.07.2017 01:10

Цитата:

Сообщение от рони (Сообщение 458544)
так нельзя проверять массив ли это?
поэтому лучше

var extraCube =(x) => x = x instanceof Array? x.map((x) => x*x*x):x*x*x;

Рони, для вас! :thanks:


Часовой пояс GMT +3, время: 15:30.