@zeni1agent

Как сделать более чистый перебор массива?

у меня есть вот такой код
arr1 = ['lot','lol', 'lov', 'lor', 'lou','lop' ,'loh'];
arr2 = [1,2,3,4,5,6,7,8,9,10]
var id = 0;
for(let idx = 0; idx < arr1.length; idx++ ){
 a = arr1[idx];
 b1 = arr2[id];
 c1 = arr2[id+1];

alert('name: '+a+' val1: '+b1+' val2: '+c1); 
if(arr2[id+2]  && arr2[id+3]){
id++ 
id++  
}
}

И я бы хотел удалить лишние переменные что бы сделать код короче
Но я не знаю как мне правильно это сделать
  • Вопрос задан
  • 176 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
const result = arr1.map((n, i) => {
  const index = Math.min(i * 2, ((arr2.length - 2) / 2 | 0) * 2);
  return `name: ${n} val1: ${arr2[index]} val2: ${arr2[index + 1]}`;
});

result.forEach(alert);
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
const len1 = arr1.length;
const top2 = 2 * Math.floor((arr2.length - 2) / 2);
for (let id1 = 0, id2 = 0; id1 < len1; id1++, id2 = Math.min(top2, id2 + 2)) {
  console.log(`name: ${arr1[id1]} val1: ${arr2[id2]} val2: ${arr2[id2 + 1]}`); 
}


[заметки на полях] Имена переменным лучше давать с намёком на их смысл. Если даны arr1 и arr2, индексы по ним, соотв., хорошо назвать с теми же номерами: id1 и id2
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Robur
@Robur
Знаю больше чем это необходимо
лучше вот это
if(arr2[id+2]  && arr2[id+3]){
id++ 
id++  
}


уберите, это все можно в for вписать, и инкремент и условие
a, b1, c1 - норм переменные
Ответ написан
Комментировать
profesor08
@profesor08 Куратор тега JavaScript
arr1.slice(0, arr2.length - 1).forEach((name, id) => {
  console.log(`name: ${name} val1: ${arr2[id]} val2: ${arr2[id + 1]}`);
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы