Реализовать функцию фильтра массива по указанному типу данных
Написать функцию filterBy(), которая будет принимать в себя 2 аргумента. Первый аргумент - массив, который будет содержать в себе любые данные, второй аргумент - тип данных.
Функция должна вернуть новый массив, который будет содержать в себе все данные, которые были переданы в аргумент, за исключением тех, тип которых был передан вторым аргументом. То есть, если передать массив ['hello', 'world', 23, '23', null], и вторым аргументом передать string, то функция вернет массив [23, null].
Ответы (3 шт):
Надо уточнить, что будет возвращаться без второго аргумента, отличного от стринг... Вы уверенны, что массив именно такой - (смешанный и одномерный)?
Делаешь приблизительно так(вариант не оптимальный, без unset);
function filter_by ($arr, $what){
$n_arr = array();
if($what){
if(is_array($arr) && count($arr)>0 ){
foreach($n_arr as $el){
if(gettype($el) != $what ){
$n_arr[] = $el;
}
}
}else{
echo "Первый аргумент должен быть (НЕ ПУСТЫМ) массивом!</br>";
}
}else{
echo "Первый аргумент должен быть не пустым и указывать на тип!</br>";
}
return $n_arr;
}
Думаю как-то так
function filterBy(array, type) {
return array.reduce((res, currentItem) => { if ( typeof currentItem != type) { res.push(currentItem);} return res} , []);
}
console.log(filterBy(['hello', 'world', 23, '23', null], 'string'))
let items = ['hello', 'world', 23, '23', null]
const filterBy = (arr, type) => arr.filter(item => typeof item !== type)
console.log(filterBy(items, "string"))