Возведение в куб число и массив числовых значений используя функцию
Есть такая задача:
Напишите функцию 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) ); а вот с массивом чисел не понятно как это можно сделать. Причем для числа и массива чисел это должна быть одна функция. Помогите пожалуйста |
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); } |
а можете мне расписать как оно работает?)
|
кажется разобралась
Я правильно понимаю, что функция extraCube нам посчитает массив,а toCube - числа? И если наши числа это не массив, то сработает return toCube(x);? |
var extraCube =(x) => x = x===0||+x ? x*x*x : x.map((x) => x*x*x); |
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)); рони, да и массив и число можно. |
Цитата:
поэтому лучше Цитата:
|
Цитата:
var extraCube =(x) => x = x instanceof Array? x.map((x) => x*x*x):x*x*x; Рони, для вас! :thanks: |
j0hnik,
А зачем так просто? Тут же надо через регулярки!!! const extraCube = x => JSON.parse(JSON.stringify(x).replace(/(\d+)/gmi, x=>x**3)); |
EmperioAf,
:) |
Цитата:
|
j0hnik,
на всякий случай почему нельзя +x var extraCube =(x) => x = x===0||+x ? x*x*x : x.map((x) => x*x*x); alert(extraCube([1])[0]); |
Рони, x!=[1] добавить и будет работать.
Все равно, не обязательно проверять именно на массив, можно и на Number проверить. |
Цитата:
var extraCube =function(x){ if (x = x instanceof Array){ x.map((x) => x*x*x); }else{ x*x*x; } } |
Цитата:
var extraCube =function(x){ if (x instanceof Array){ x = x.map((x) => x*x*x); }else{ x = x*x*x; } return x } смотрите пример EmperioAf, пост №2 |
Цитата:
|
Цитата:
Цитата:
|
спасибо
|
Часовой пояс GMT +3, время: 08:21. |