Saya telah menempatkan breakpoint ke dalam panggilan balik di mana saya seharusnya menjalankan pencarian ke dalam array objek. Pernyataan array.find mengembalikan elemen yang saya harapkan, tetapi jika saya mencoba menetapkan hasil ini ke variabel, saya mendapatkan 'tidak terdefinisi'

let resultCallback = function(data) {
  var el = form.texts.find(text => {
    text.options.name === this.options.name;
  }, that);// breakpoint is here
//in console, form.texts.find(text => {text.options.name === this.options.name}, that); returns the element I"m looking for
// but el still is 'undefined'

};

Saya tidak yakin saya menggunakan nama variabel yang dicadangkan, tetapi mengubah nama di sekitar tidak menyelesaikan masalah. Saat melihat dokumentasi, saya melihat bahwa saya dapat menetapkan hasil find ke variabel, jadi saya tidak yakin apa yang salah di sini.

Adakah yang bisa membantu?

0
gaudi_br 29 Oktober 2019, 16:52

2 jawaban

Jawaban Terbaik

Anda memiliki masalah dengan konteksnya. konteks objek yang Anda gunakan ini milik fungsi resultCallback, karena ini bukan fungsi panah. Saya tidak tahu di mana fungsi ini dideklarasikan tetapi coba ubah ke fungsi panah terlebih dahulu. yaitu

let resultCallback = (data) => {
  var el = form.texts.find(text => 
    text.options.name === this.options.name, that
  );
};

Anda meneruskan referensi objek ini sebagai argumen kedua untuk ditemukan, yang tidak perlu karena ketika Anda memanggil fungsi resultCallback, Anda tidak meneruskan 'itu' sebagai parameter ke fungsi tersebut. Dan juga menghapus keriting dari fungsi panah sehingga mengembalikan hasil perbandingan.

0
Ahmet Cetin 29 Oktober 2019, 14:18

Fungsi find Anda tidak mengembalikan apa pun, yang secara default berarti mengembalikan undefined. Hilangkan blok kode pada baris 2-4, atau gunakan pernyataan return sebelum text.options.name === this.options.name;

Saat menggunakan fungsi panah, kata kunci kembali diperlukan jika Anda menentukan blok. Kalau tidak, itu akan mengembalikan ekspresi tepat setelah panah.

0
amirKovacevic 29 Oktober 2019, 14:04