Каким образом массивы через данный цикл сливаются в один
for(let i = 0; i < (arr1.length + arr2.length); i++) {
if(i < arr1.length) {
arr3.push(arr1[i])
} else {
arr3.push(arr2[i - arr1.length])
}
}
console.log(arr3)
Каков принцип работы данного кода. Никак не могу понять каким образом массивы через данный цикл сливаются в один?
Ответы (1 шт):
Автор решения: Grundy
→ Ссылка
При объединении известна конечная длина массива: arr1.length + arr2.length
Далее в цикле в результирующий массив добавляются по одному сначала элементы из первого массива:
if(i < arr1.length) { // при этом условии
arr3.push(arr1[i]) // `i` соответствует индексу элементы в массиве `arr1`
}
затем из второго
else { // в эту ветвь попадаем, когда все элементы из первого массива добавлены в результат
arr3.push(arr2[i - arr1.length]) // в этом случае чтобы получить индекс элемента из второго массива, нужно из `i` вычесть длину первого массива
}
Если записать это двумя циклами будет намного понятнее:
for(let i = 0; i < arr1.length; i++) {
arr3.push(arr1[i])
}
for(let i = 0; i < arr2.length; i++) {
arr3.push(arr2[i])
}
console.log(arr3)