Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.07.2017, 21:14
Аспирант
Отправить личное сообщение для Tanya51 Посмотреть профиль Найти все сообщения от Tanya51
 
Регистрация: 09.07.2017
Сообщений: 49

Возведение в куб число и массив числовых значений используя функцию
Есть такая задача:
Напишите функцию 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) );


а вот с массивом чисел не понятно как это можно сделать. Причем для числа и массива чисел это должна быть одна функция.
Помогите пожалуйста
Ответить с цитированием
  #2 (permalink)  
Старый 14.07.2017, 21:19
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

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);
}

Последний раз редактировалось EmperioAf, 14.07.2017 в 21:29. Причина: комментарий
Ответить с цитированием
  #3 (permalink)  
Старый 14.07.2017, 21:23
Аспирант
Отправить личное сообщение для Tanya51 Посмотреть профиль Найти все сообщения от Tanya51
 
Регистрация: 09.07.2017
Сообщений: 49

а можете мне расписать как оно работает?)
Ответить с цитированием
  #4 (permalink)  
Старый 14.07.2017, 21:43
Аспирант
Отправить личное сообщение для Tanya51 Посмотреть профиль Найти все сообщения от Tanya51
 
Регистрация: 09.07.2017
Сообщений: 49

кажется разобралась
Я правильно понимаю, что функция extraCube нам посчитает массив,а toCube - числа?
И если наши числа это не массив, то сработает return toCube(x);?
Ответить с цитированием
  #5 (permalink)  
Старый 14.07.2017, 22:45
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

var extraCube =(x) => x = x===0||+x ? x*x*x : x.map((x) => x*x*x);
Ответить с цитированием
  #6 (permalink)  
Старый 14.07.2017, 23:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

j0hnik,
Сообщение от Tanya51
принимает в качестве параметра или число, или массив
Сообщение от Tanya51
возвращает либо куб числа, либо массив кубов
Ответить с цитированием
  #7 (permalink)  
Старый 14.07.2017, 23:29
Аспирант
Отправить личное сообщение для Tanya51 Посмотреть профиль Найти все сообщения от Tanya51
 
Регистрация: 09.07.2017
Сообщений: 49

спасибо
Ответить с цитированием
  #8 (permalink)  
Старый 14.07.2017, 23:44
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от рони Посмотреть сообщение
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));


рони, да и массив и число можно.
Ответить с цитированием
  #9 (permalink)  
Старый 15.07.2017, 00:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от j0hnik
+x
так нельзя проверять массив ли это?
поэтому лучше
Сообщение от EmperioAf
if(x instanceof Array)
Ответить с цитированием
  #10 (permalink)  
Старый 15.07.2017, 01:10
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от рони Посмотреть сообщение
так нельзя проверять массив ли это?
поэтому лучше
var extraCube =(x) => x = x instanceof Array? x.map((x) => x*x*x):x*x*x;

Рони, для вас!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск