Fungsi Gagal Mengembalikan Nilai Apabila Menggunakan Kaedah forEach
Setelah mencipta fungsi untuk memeriksa nilai tatasusunan objek, ia secara tidak dijangka mengembalikan yang tidak ditentukan. Isu ini telah mencetuskan kekeliruan dan kami akan menyelidiki sebab di sebalik tingkah laku ini.
Penjelasan Masalah
Dalam coretan kod yang disediakan, fungsi getByKey menggunakan kaedah forEach untuk melintasi tatasusunan data. Di dalam fungsi panggil balik, anda cuba mengembalikan nilai berdasarkan semakan bersyarat. Walau bagaimanapun, penyataan pulangan ini hanya keluar dari fungsi tanpa nama yang diserahkan kepada forEach, bukan fungsi getByKey itu sendiri. Akibatnya, undefined dikembalikan daripada panggilan fungsi getByKey.
Penyelesaian
Terdapat beberapa cara untuk menyelesaikan isu ini:
Gunakan For Loop: Gantikan forEach dengan for tradisional. Pendekatan ini membolehkan anda mengembalikan nilai yang diingini daripada gelung itu sendiri.
function getByKey(key) { for (var i = 0; i < data.length; i++) { if (data[i].Key === key) { return data[i]; } } }
Simpan Hasil dalam Pembolehubah: Dalam fungsi panggil balik, tetapkan yang dipadankan nilai kepada pembolehubah dan kembalikan pembolehubah itu daripada getByKey fungsi.
function getByKey(key) { var found = null; data.forEach(function (val) { if (val.Key === key) { found = val; } }); return found; }
Dengan melaksanakan penyelesaian ini, anda memastikan bahawa fungsi getByKey mengembalikan nilai yang dikehendaki dengan betul apabila padanan ditemui.
Atas ialah kandungan terperinci Mengapa Fungsi Saya Kembali `undefined` Apabila Menggunakan `forEach`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!