привет! возник вопрос! например: есть массив var arr = [1,‘cat’,35,‘dog’,888,‘hotdog’,]; нужно через функцию вывести только строки .
Создаешь исходный массив. Создаешь пустой массив куда будешь записывать результат. Создаешь функцию, в которой есть цикл for(перебор элементов массива). В этом цикле проверяешь каждый элемент с помощью if(typeof). Если строка, запихаешь элемент в новый массив результата, если нет возвращаешься в начало цикла. и потом вызываешь функцию, которая и выводит итоговый массив, только из строк. Вот тебе алгоритм. Может можно и проще, если что подскажите как правильно.
а можно простой пример ?
var arr = [1,'cat',35,'dog',888,'hotdog'];
var newArr = [];
function stringArr(array){
for(var i=0; i< array.length; i++){
if(typeof array[i] != "string"){
continue;
}else {
newArr.push(array[i]);
}
}
alert(newArr);
}
stringArr(arr);
о,спасибо большое! буду тренироваться.
фильтр - аргументом передается функция, возвращающая єлемент , если он подходит твоим условиям.
arr.filter(function(el){return typeof(el)===“string”}).
функцию можно обозвать какнибудь - и использовать arr.filter(funcСheckString).
Как раз тот случай, когда alert
скроет ошибку. В той строке, что будет заалерчена строки никак не будут отличаться от чисел. Лучше использовать console.log
.
фильтр - аргументом передается функция, возвращающая єлемент , если он подходит твоим условиям.
arr.filter(function(el){return typeof(el)===“string”}).
функцию можно обозвать какнибудь - и использовать arr.filter(funcСheckString).
Да, естественно так короче, и для этой задачи верней.
И не забывать, что filter появился в 5-ой версии js