Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как обратится к эллементу массива в цикле js

VIktor Ученик (43), закрыт 1 год назад
 function friend(friends) {
newArr = [];

for (i = 0; i <= friends.length; i++) {
if (friends[i].length <= 3) {
newArr.push(friends[i]);
}
}
console.log(newArr);
}
friend(["Lena", "Vitya", "Kim", "Kira", "Yasha"]);
Надо перебрать массив с именами друзей, если в имени больше 4х символов не брать, если 4 и меньше то оставить. Почему не работает?
Лучший ответ
Николай Веселуха Высший разум (360748) 1 год назад
 function friend(friends) { 
let names = [];
for (let name of friends) {
if (name.length < 5) {
names.push(name);
}
}
return names;
}
let names = friend(["Lena", "Vitya", "Kim", "Kira", "Yasha"]);
console.log(names);
Остальные ответы
Андрей Высший разум (425858) 1 год назад
Потому, что i <= friends.length - ошибка. Должно быть i < friends.length

Но намного проще:
 function friend(friends) { 
newArr = [];
for (let s of friends) {
if (s.length <= 3) {
newArr.push(s);
}
}
console.log(newArr);
}
А ещё проще:
 function friend(friends) {  
newArr = friends.filter(s => s.length <= 3);
console.log(newArr);
}
P.S. Ты почему-то упорно не используешь let / const / var.
VIktorУченик (43) 1 год назад
спасибо, а как сделать проверку что бы цифры и пустые строки тоже фильтровались?
VIktorУченик (43) 1 год назад
у меня просто тест не проходит, там есть массив что-то типа ["Ryan","123","4"], должно оставить только Ryan
Андрей Высший разум (425858) S1ayer, Заменить: s.length <= 3 на
 /^[a-z]{1,3}$/i.test(s) 
Это если не более 3 символов. А если имя любой длины, то:
 /^[a-z]+$/i.test(s) 
Jacob G. Искусственный Интеллект (264426) 1 год назад
При работе с массивами я всегда предпочитаю использовать map, а не цикл. Это упрощает чтение и понимание кода, не требует никаких фильтров. Современный подход.
 function friend(friends) { 
let result = [];
friends.map(short => {
if (short.length < 5) {
result.push(short)
}
});
console.log(result);
}
friend(["Lena", "Vitya", "Kim", "Kira", "Yasha", "Vieeetya"]);
Похожие вопросы