Freecodecamp: Mengakses Properti Objek dengan Variabel yang Membingungkan?

Dibuat pada 21 Des 2016  ·  10Komentar  ·  Sumber: freeCodeCamp/freeCodeCamp


Nama Tantangan


Mengakses Properti Objek dengan Variabel

Deskripsi masalah


Tantangan ini membingungkan saya. Sejak di tantangan sebelumnya dengan mengakses objek. Saya membaca bahwa tanda kurung siku hanya boleh digunakan jika ada ruang di properti yang perlu Anda akses. Dan sekarang dalam tantangan ini mereka ingin saya menggunakan notasi tanda kurung jika properti tidak memiliki spasi

help wanted

Komentar yang paling membantu

@ChrisKissoon Bracket notation berguna ketika Anda harus mengakses properti yang namanya dikumpulkan secara dinamis selama eksekusi program.
misalnya

var obj = {
  propName : "John"
}

function propPrefix(str) {
  var s = "prop";
  return s + str;
}

var someProp = propPrefix("Name")

console.log(obj[someProp]) // -> "John"

Konsep ini bisa kita jelaskan dalam uraian, jika tidak terlalu bertele-tele

Semua 10 komentar

/ cc @ FreeCodeCamp / moderator
Adakah yang bisa membantu dalam triaging jika petunjuk memerlukan klarifikasi lebih lanjut? Saya mungkin bias tetapi mereka tampak langsung bagi saya.

@ChrisKissoon Bracket notation berguna ketika Anda harus mengakses properti yang namanya dikumpulkan secara dinamis selama eksekusi program.
misalnya

var obj = {
  propName : "John"
}

function propPrefix(str) {
  var s = "prop";
  return s + str;
}

var someProp = propPrefix("Name")

console.log(obj[someProp]) // -> "John"

Konsep ini bisa kita jelaskan dalam uraian, jika tidak terlalu bertele-tele

Terima kasih @ Emt-Ant, apakah kami perlu memperbarui petunjuk untuk klarifikasi lebih lanjut? Pendapat Anda?

@raisedadead @ Em-Ant,
Saya dapat memahami kebingungannya, memperbarui dengan klarifikasi lebih lanjut sepertinya ide yang bagus.

Untuk orang yang lebih baru dengan contoh seperti ini:

var someProp = "propName";
var myObj = {
  propName: "Some Value"
}
myObj[someProp]; // "Some Value"

mudah untuk berpikir, "Mengapa tidak melakukan myObj.propName karena kita melakukan hal yang sama"

Sekali lagi, contoh kedua:

var myDog = "Hunter";
var dogs = {
  Fido: "Mutt",
  Hunter: "Doberman",
  Snoopie: "Beagle"
}
var breed = dogs[myDog];
console.log(breed);// "Doberman"

melakukan hal yang sama. Itu hanya melampirkan nilai ke variabel. Mengapa kita bahkan membutuhkan variabel ?? Saya benar-benar berpikir bahwa kita harus menambahkan seperti yang dikatakan @ Em-Ant, contoh di mana variabel diubah secara dinamis. Karena jika Anda hanya menetapkan variabel sama dengan string dan menggunakan variabel, itu tidak masuk akal. Akan lebih praktis jika hanya menggunakan notasi titik. Tantangannya tidak masuk akal kecuali Anda menjelaskan mengapa kita perlu menggunakan variabel di tempat pertama daripada notasi titik. Jadi pilihan saya adalah menambahkan contoh lain dan menjelaskan mengapa menggunakan variabel.

@IsaAbaham terima kasih.

Kontributor perlu mengubah tantangan ini bersama dengan Updating Object Properties juga. Silakan beri komentar di bawah ini dengan refactoring yang disarankan untuk keduanya sebelum membuat permintaan tarik.

/ cc @erictleung pemikiran?

Hai @raisedadead ,
Dengan membaca semua masalah yang berkaitan dengan notasi objek saya mengerti itu tidak jelas bagi pemula. Mereka tampak langsung bagi saya. Untuk membuatnya lebih sederhana, bagaimana membuat perubahan ini.

Mengakses Objek: (https://github.com/FreeCodeCamp/FreeCodeCamp/issues/12141)

var currency = {
   USA  : "dollar",
   London : "euro",
   India : "rupee",
}
function getCurrency(country){
 return country +" currency is "+currency[country] +" ";
}
getCurrency("USA") // "USA currency is dollar" 

Saya tidak melihat masalah apa pun dengan Memperbarui Objek. Koreksi saya jika saya salah.
Bahkan saya berpikir untuk menambahkan tantangan Objek Bersarang. Beri tahu saya bagaimana saya dapat membantu meningkatkan kualitas ini.

@raisedadead mari kita lihat apakah saya bisa mengatasi masalah objek ini.

Kontributor perlu mengubah tantangan ini bersama dengan Updating Object Properties juga. Silakan beri komentar di bawah ini dengan refactoring yang disarankan untuk keduanya sebelum membuat permintaan tarik.

Jadi untuk tantangan awal pada objek, "Buat Objek JavaScript" , objek contoh memiliki semua properti yang berupa string. Mungkin kita bisa menambahkan objek sampel lain dengan properti tipe yang berbeda, seperti

var sampleObject = {
  property_1: "Green",
  2: "Hal",
  "property_3": "Lantern"
};

_Might_ ini lebih membingungkan tetapi mengeksplorasi kemungkinan objek, yang mungkin mendorong peserta untuk menyelidiki sedikit. Plus, kode benih untuk "Mengakses Properti Objek dengan Variabel" memiliki angka sebagai properti, yang belum ditampilkan dalam tiga tantangan sebelumnya pada objek.


Saya membaca bahwa tanda kurung siku hanya boleh digunakan jika ada ruang di properti yang perlu Anda akses.

Ini bisa diperbaiki dengan mengubah bagaimana mereka adalah notasi braket yang dijelaskan dalam "Mengakses Properti Objek dengan Notasi Braket" . Instruksi

Jika properti objek yang Anda coba akses memiliki spasi di dalamnya, Anda perlu menggunakan notasi braket.

bisa diubah menjadi sesuatu seperti

Jika properti objek yang Anda coba akses memiliki spasi di dalamnya, Anda perlu menggunakan notasi braket. Namun, Anda masih dapat menggunakan notasi braket pada properti tanpa spasi.

Dan kemudian kita dapat memodifikasi objek sampel untuk menunjukkan bahwa Anda juga dapat memiliki properti tanpa spasi.

var myObj = {
  "Space Name": "Kirk",
  "More Space": "Spock",
  "NoSpace": "USS Enterprise"
};
myObj["Space Name"]; // Kirk
myObj['More Space']; // Spock
myObj["NoSpace"];    // USS Enterprise

Untuk "Mengakses Object Properti dengan Variabel" , aku seperti @ Em-Ant saran untuk menggantikan, mengatakan, contoh pertama, yaitu menghapus

var someProp = "propName";
var myObj = {
  propName: "Some Value"
}
myObj[someProp]; // "Some Value"

dan memindahkan contoh objek dogs sebagai contoh pertama dan memiliki sesuatu seperti

var obj = {
  propName : "John"
}

function propPrefix(str) {
  var s = "prop";
  return s + str;
}

var someProp = propPrefix("Name");
console.log(obj[someProp]); // "John"

sebagai contoh kedua.

Bagaimana dengan mengatakan bahwa notasi braket adalah bentuk manipulasi objek yang lebih dinamis. Anda dapat menggunakan string yang dapat keluar dari sebagian besar aturan deklarasi JavaScript, seperti memulai dengan angka dan menggunakan string a dengan spasi sebagai nama properti. Anda juga dapat menempatkan variabel di dalam tanda kurung siku yang memungkinkan properti ditetapkan dengan cepat atau melalui beberapa efek samping. Katakanlah misalnya Anda memiliki objek dalam program Anda dan Anda tidak yakin apa properti yang diperlukan selama pembuatan sehingga Anda mengizinkan program untuk menetapkannya selama waktu proses.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat