Este es un código que estoy escribiendo para la pregunta 46 de leetcode. Implementé la misma lógica en Python y funcionó, pero cuando traté de escribir un equivalente de JS, no funcionó como se esperaba. Los bucles for no se están ejecutando por alguna razón.
/** * @param {number[]} nums * @return {number[][]} */ const permute = nums => { const final_list = []; const bfs = (num, new_nums, current_list) => { current_list.push(num); if(new_nums.length === 0){ final_list.push(current_list); return; } // This loop does not run for all iterations for(i=0;i<new_nums.length;i++){ let new_nums2 = new_nums.filter(n => n!== new_nums[i]); bfs(new_nums[i], [...new_nums2], [...current_list]); } } // Only the runs for i=0 for(i=0;i<nums.length;i++){ let new_nums = nums.filter(n => n!== nums[i]); bfs(nums[i], new_nums, []); } return final_list };Entrada: [1,2,3] Salida: [[1,2,3]]
Sé que el problema está en los bucles porque los registré en la consola y no se ejecutan por completo. En el ciclo inferior, por ejemplo, solo se ejecutó para i=0. ¿Qué estoy haciendo mal aquí?
Editar : gracias a @Bergi descubrí lo que está mal, me perdí la declaración de I. Sin embargo, no creo que la pregunta duplicada marcada sea muy útil aquí, con solo mirar la llamada pregunta duplicada nunca hubiera sabido dónde me equivoque