Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   функция которая имеет любое кол-во аргументов и возращает определённого типа (https://javascript.ru/forum/misc/75415-funkciya-kotoraya-imeet-lyuboe-kol-vo-argumentov-i-vozrashhaet-opredeljonnogo-tipa.html)

melnikov24 06.10.2018 20:07

функция которая имеет любое кол-во аргументов и возращает определённого типа
 
Мне надо написать функцию filterByType, которая принимает любое кол-во аргументов:

• первый аргумент — это тип данных (number, string или boolean), по которому нужно отфильтровать следующие аргументы (2 и далее)

• аргументы, начиная с 2 и далее — любые значения

• функция должна возвращать массив с теми аргументами, которые соответствуют типу данных, переданному в первом аргументе

Пример вызова:

filterByType ('string', 10, 20, ‘a’, ‘b’, true, false);

// возвращает массив [‘a’, ‘b']

Белый шум 06.10.2018 20:39

Псевдомассив аргументов "arguments"

Ну или в явном виде принимать массив: filterByType ('string', [10, 20, ‘a’, ‘b’, true, false]);

рони 06.10.2018 21:02

melnikov24,
function filterByType()
 {
    [type, ...arr] = arguments;
    return arr.filter(e => typeof e == type)
 }
 let obj = filterByType ('string', 10, 20, 'a', 'b', true, false);
 alert(JSON.stringify(obj));

Aetae 06.10.2018 21:25

рони, Зачем такие извращения?)
function filterByType(type, ...arr){
    return arr.filter(e => typeof e === type)
}
let obj = filterByType ('string', 10, 20, 'a', 'b', true, false);
alert(JSON.stringify(obj));

рони 06.10.2018 21:39

Aetae,
:) ок, спасибо!

melnikov24 06.10.2018 22:07

Цитата:

Сообщение от Aetae (Сообщение 495903)
рони, Зачем такие извращения?)
function filterByType(type, ...arr){
    return arr.filter(e => typeof e === type)
}
let obj = filterByType ('string', 10, 20, 'a', 'b', true, false);
alert(JSON.stringify(obj));

Спасибо всё понятно)

SoundMind 23.01.2020 12:16

function filterByType(type, ...args) {
  return args.filter(function(arg) {
    return typeof(arg) === typeof(type)
  })
}
alert(filterByType( 'string', 10, 20, 'a', 'b', true, false));

рони 23.01.2020 12:22

SoundMind,
:-?


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