Rumah > hujung hadapan web > tutorial js > Mengapa Fungsi Saya Kembali Tidak Ditakrifkan Apabila Menggunakan Lelaran Tatasusunan?

Mengapa Fungsi Saya Kembali Tidak Ditakrifkan Apabila Menggunakan Lelaran Tatasusunan?

Mary-Kate Olsen
Lepaskan: 2024-11-13 08:12:02
asal
415 orang telah melayarinya

Why Does My Function Return Undefined When Using Array Iterations?

Mengembalikan Dilema yang Tidak Ditakrifkan: Membongkar Misteri Di Sebalik Fungsi dan Lelaran Susunan

Dalam bidang pengaturcaraan, enigma biasa timbul apabila menggunakan fungsi dan lelaran tatasusunan. Walaupun pernyataan pemulangan sering digunakan, hasilnya mungkin masih tidak ditentukan. Untuk mendedahkan sebab di sebalik isu yang membingungkan ini, mari kita terokai kes khusus yang melibatkan fungsi yang dipanggil getByKey yang cuba mendapatkan semula objek daripada tatasusunan berdasarkan kekunci.

The Enigma

Fungsi getByKey, bertujuan untuk mencari objek dalam tatasusunan objek, secara konsisten mengembalikan tidak ditentukan. Walaupun terdapat kenyataan pemulangan dalam fungsi panggil balik dalamannya, gelagat yang membingungkan ini telah membingungkan pembangun.

Meneroka Resolusi

Setelah disiasat, ternyata bahawa pemulangan penyataan dilaksanakan dalam fungsi panggil balik yang disediakan untuk kaedah forEach, yang tidak sama dengan kembali daripada fungsi getByKey itu sendiri. Untuk membetulkan isu ini, kita boleh sama ada mengubah suai kod untuk menggunakan kaedah peta dan bukannya forEach, atau kita boleh memilih untuk gelung tradisional, yang menawarkan lebih kawalan ke atas proses lelaran.

Kod Dioptimumkan dengan Peta

Menggunakan kaedah peta, kami mengubah tatasusunan menjadi tatasusunan baharu yang mengandungi hasil yang diingini. Untuk setiap elemen dalam tatasusunan asal, kami menggunakan fungsi panggil balik, yang mencari kunci dan mengembalikan objek yang sepadan.

function getByKey(key) {
    return data.map(function (val) {
        if (val.Key === key) {
            return val;
        }
    }).filter(function (val) {
        return val !== undefined;
    })[0];
}
Salin selepas log masuk

Penyelesaian Ringkas dengan For Loop

Untuk kecekapan yang lebih tinggi, kita boleh menggunakan gelung for untuk mengulangi elemen tatasusunan. Pendekatan ini menyediakan kawalan langsung ke atas gelung dan membolehkan kami keluar serta-merta apabila objek yang sepadan ditemui.

function getByKey(key) {
    for (var i = 0; i < data.length; i++) {
        if (data[i].Key === key) {
            return data[i];
        }
    }
}
Salin selepas log masuk

Memahami Kehalusan

Adalah penting untuk diperhatikan bahawa fungsi panggil balik dalam forEach tidak kembali terus daripada fungsi yang mengandungi. Pernyataan pulangan dalam panggilan balik mempengaruhi pelaksanaan panggilan balik itu sendiri, tetapi bukan aliran pelaksanaan fungsi yang disertakan. Oleh itu, adalah penting untuk mempertimbangkan dengan teliti penempatan penyata pulangan apabila bekerja dengan fungsi lelaran tatasusunan.

Atas ialah kandungan terperinci Mengapa Fungsi Saya Kembali Tidak Ditakrifkan Apabila Menggunakan Lelaran Tatasusunan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan