diff --git a/packages/svelte/src/internal/client/dom/blocks/each.js b/packages/svelte/src/internal/client/dom/blocks/each.js index 29d47cf17c..928d88978b 100644 --- a/packages/svelte/src/internal/client/dom/blocks/each.js +++ b/packages/svelte/src/internal/client/dom/blocks/each.js @@ -438,15 +438,15 @@ function reconcile_tracked_array(array, each_block, dom, is_controlled, render_f var b_length = b_end - start; var sources = new Int32Array(b_length); var item_index = new Map(); - for (b = 0; b < b_length; b += 1) { - i = b + start; - sources[b] = NEW_BLOCK; + + for (i = start; i < b_end; i += 1) { + sources[i - start] = NEW_BLOCK; map_set(item_index, keys[i], i); } // If keys are animated, we need to do updates before actual moves if (is_animated) { - for (b = start; b <= a_end - 1; b += 1) { + for (b = start; b < a_end; b += 1) { i = map_get(item_index, /** @type {V} */ (a_blocks[b].k)); if (i !== undefined) { update_each_item_block(a_blocks[b], array[i], i, flags);