Mengapakah `forEach` Mengembalikan `undefined` Walaupun Dengan Pernyataan `return` Di Dalam Fungsi Lelaran?

Mary-Kate Olsen
Lepaskan: 2024-11-10 09:28:03
asal
139 orang telah melayarinya

Why Does `forEach` Return `undefined` Even With a `return` Statement Inside the Iteration Function?

Menyelesaikan Masalah Pulangan Tidak Ditakrifkan dalam Fungsi Menggunakan forEach

Fungsi tertentu, apabila digunakan dengan kaedah forEach, mungkin kembali tidak ditentukan walaupun disertakan pulangan kenyataan. Tingkah laku ini berlaku kerana penyataan pemulangan mempengaruhi fungsi lelaran yang dihantar kepada forEach, dan bukannya fungsi melampirkan itu sendiri.

Kod Contoh:

Pertimbangkan fungsi berikut:

def get_by_key(key):
    data.forEach(function(i, val):
        if data[val].Key == key:
            return data[val].Key
        else:
            return "Couldn't find"
    )
Salin selepas log masuk

Apabila anda memanggil fungsi ini, anda mungkin mengharapkan ia mengembalikan nilai kunci dalam tatasusunan data, tetapi ia secara konsisten pulangan tidak ditentukan. Ini kerana penyataan pulangan berada di dalam fungsi lelaran, yang tidak menjejaskan nilai pulangan get_by_key.

Penyelesaian:

Terdapat dua cara utama untuk menangani isu ini:

1. Menggunakan Penutupan:

def get_by_key(key):
    found = None
    data.forEach(function(val):
        if val.Key == key:
            found = val
    )
    return found
Salin selepas log masuk

Dalam penyelesaian ini, kami mencipta penutupan dengan mengisytiharkan pembolehubah yang ditemui di luar fungsi lelaran. Ini membolehkan kami mengembalikan nilai tanpa menjejaskan fungsi lelaran.

2. Menggunakan untuk Gelung:

def get_by_key(key):
    for i in range(len(data)):
        if data[i].Key == key:
            return data[i]
Salin selepas log masuk

Untuk set data yang lebih kecil, gelung untuk mudah boleh menjadi lebih cekap daripada menggunakan forEach. Ia berulang melalui tatasusunan data dan mengembalikan nilai yang ditemui.

Pertimbangan Tambahan:

  • Daripada mengembalikan kunci, anda mungkin mahu mengembalikan nilai penuh daripada objek yang sepadan dengan kunci.
  • Menggunakan pernyataan putus di dalam fungsi lelaran boleh meningkatkan prestasi, kerana ia keluar dari gelung lebih awal apabila kunci ditemui.

Atas ialah kandungan terperinci Mengapakah `forEach` Mengembalikan `undefined` Walaupun Dengan Pernyataan `return` Di Dalam Fungsi Lelaran?. 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