Çözüldü Javascript listelerde yapamadığım yer

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
19 Ocak 2020
Mesajlar
4.639
Makaleler
18
Çözümler
58
Node ile bir JSON dosyasına veri yazmaya çalışıyorum. Tek bir sıkıntım var.
Sağdaki değeri değişkenden yazarken soldaki değeri yazmıyor.
JavaScript:
var arabaadi = "GT 86"
var para = "300000"
student = {
     arabaadi : para
 
  };
  let data = JSON.stringify(student);


fs.writeFileSync('./util/carprice.json', data);
Sonuç:
{ "arabaadi" : "300000"}

Bu bu dilin bir özelliği sanırım. Ama Pythonda iki değer de değişken olabiliyordu.
Python:
    bilgi = input("İsim/eposta/şifre")
    bilgiler = bilgi.split("/")
  
    yazı = {
    bilgiler[0] : {
        "email" : bilgiler[1],
        "sifre" : bilgiler[2]
    }

    }
Tırnak içine yazmayınca değişken, içine yazınca ise direkt alıyordu böyle. Sonra da böyle yazıyordu:
JSON:
{

    "İsim" : {

        "email" :"eposta" ,

        "sifre" : "sifre"

    }
    }
Ben bunu yapmayı nasıl başarabilirim?
 
Çözüm
JavaScript obje içerisinde key tarafında doğrudan değişken kullanamıyorsun, fakat bunun bir yolu var. O da, objeyi ilk initialize ederken değil de (ilk tanımlarken), sonradan köşeli parantezler kullanarak alan set etmek. obje["key"] = "value" yapısı kullanıldığında, şu şekilde bir obje ortaya çıkıyor:
[CODE lang="javascript" title="Örnek Obje"]{
"key": "value"
}[/CODE]

Obje üzerinde köşeli parantez kullanarak objenin bir alanını alabilir veya set edebilirsin:
[CODE lang="javascript" title="Get Örneği"]var arabalar = {
"GT 86": 35000
};

arabalar["GT 86"]; // Sonuç: 35000[/CODE]
[CODE lang="javascript" title="Set Örneği"]var arabalar = {
"GT 86": 35000
};

arabalar["Z3"] = 30000;

/* Sonuç:
{
"GT 86": 35000,
"Z3": 30000
}
*/[/CODE]

Elbette string'e karşılık gelen değişkenleri kullanarak da objede bir alanı set edebilmek mümkün:
[CODE lang="javascript" title="Değişken Kullanarak Alan Set Etmek"]var araba_adi = "GT-40";
var araba_fiyati = 30000;
var arabalar = {};

arabalar[araba_adi] = araba_fiyati;

/* Sonuç:
{
"GT-40": 30000
}
*/[/CODE]
[CODE lang="javascript" title="pro"]yazilcak = {
student : {
arabafiyati : 5000,
slm : "technopat"
}
}

let veri = JSON.Stringfy(yazilcak);[/CODE]
O student yazan yerin değişken olması gerekli bu seferde.
Ben db ile yapmaya başladım.
Amaç .json dosyasından sonradan verileri okuyabilmek. GT 86 dediğimde para değerini verebilmesi.
 
O student yazan yerin değişken olması gerekli bu seferde.
Ben db ile yapmaya başladım.
Amaç .json dosyasından sonradan verileri okuyabilmek. GT 86 dediğimde para değerini verebilmesi.
[CODE lang="javascript" title="pro"]let bubirstring = fs.// verinin olduğu json dosyası
let super = JSON.parse(bubirstring)
console.log(super["ARABAMARKASI"])[/CODE]
 
[CODE lang="javascript" title="pro"]let bubirstring = fs.// verinin olduğu json dosyası
let super = JSON.parse(bubirstring)
console.log(super["ARABAMARKASI"])[/CODE]
Onu ben de düşündüm zaten.
O zaman benim yazdığımı okuyor o.
Ben kendine yazdırıp kendine okutmayı hedefliyorum.
Yolu yok gibi.
 
JavaScript obje içerisinde key tarafında doğrudan değişken kullanamıyorsun, fakat bunun bir yolu var. O da, objeyi ilk initialize ederken değil de (ilk tanımlarken), sonradan köşeli parantezler kullanarak alan set etmek. obje["key"] = "value" yapısı kullanıldığında, şu şekilde bir obje ortaya çıkıyor:
[CODE lang="javascript" title="Örnek Obje"]{
"key": "value"
}[/CODE]

Obje üzerinde köşeli parantez kullanarak objenin bir alanını alabilir veya set edebilirsin:
[CODE lang="javascript" title="Get Örneği"]var arabalar = {
"GT 86": 35000
};

arabalar["GT 86"]; // Sonuç: 35000[/CODE]
[CODE lang="javascript" title="Set Örneği"]var arabalar = {
"GT 86": 35000
};

arabalar["Z3"] = 30000;

/* Sonuç:
{
"GT 86": 35000,
"Z3": 30000
}
*/[/CODE]

Elbette string'e karşılık gelen değişkenleri kullanarak da objede bir alanı set edebilmek mümkün:
[CODE lang="javascript" title="Değişken Kullanarak Alan Set Etmek"]var araba_adi = "GT-40";
var araba_fiyati = 30000;
var arabalar = {};

arabalar[araba_adi] = araba_fiyati;

/* Sonuç:
{
"GT-40": 30000
}
*/[/CODE]
 
Çözüm
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı