Javascript Değişken Tanımlama
-
merhabalar
bana bir obje geliyor, içeriğini bilmiyorum.
ornegin :
kisi = {isim: 'ahmet', yas:33, urunler: [{id: 1, adet:3},{id:5, adet: 6}]}
bu objeyi alip ilk seviyedeki keylerden birer degisken yaratmak istiyorum.
isim, yas ve urunler isminde 3 degisken bekliyorum cikti olarak.
bu obje icinde gelecek keyleri bilmedigim icin const {isim, yas, urunler} = kisi seklinde yapinca isimi gormuyor. cunku keyleri bilmiyorum , herhangi bir sey olabilir bu keyler.
aradığım şey php deki su olay:
$isim = 'murat'
php de sunu yapinca:
${$isim} = "kral adam"
murat isminde bir degiskenimiz oluyor. $murat diye erisebiliyoruz.
"neden boyle bir sey istiyorsun? " diyecek olursaniz, kullaniciya ufak js kodlari yazabilmesi icin bir alan verdim. orda ufak hesaplamalar yapabiliyor. atiyorum "fiyat * 1.5" falan yapabiliyor. burda kullanacagim
-
Phpdeki o olay jsde yok.
Obje ile çalışmaya devam edip Object.keys kullan.
-
Hocam phpdeki olay gibi olsun dersen bütün işlemleri object üzerinde halledebilirsin;
const $ = {}
$.murat = "ali"
$.ali = "veli"
$[$.murat] === "veli" olacaktır
bütün işlemlerden sonra Object.keys($) yapacak olursak
['murat', 'ali'] şeklinde array verecektir.
Objenin sonundaki değişkeni almak istersem mesela
$[Object.keys($).slice(-1)[0]] veli değerini verecektir.
$'ı phpdeki değişken tanımlamanın başında kullanıldığı için benzetme amacıyla verdim. istediğin şeyi verebilirsin.
Yani var.
-
by_Tet bunu yazdı
Hocam phpdeki olay gibi olsun dersen bütün işlemleri object üzerinde halledebilirsin;
const $ = {}
$.murat = "ali"
$.ali = "veli"
$[$.murat] === "veli" olacaktır
bütün işlemlerden sonra Object.keys($) yapacak olursak
['murat', 'ali'] şeklinde array verecektir.
Objenin sonundaki değişkeni almak istersem mesela
$[Object.keys($).slice(-1)[0]] veli değerini verecektir.
$'ı phpdeki değişken tanımlamanın başında kullanıldığı için benzetme amacıyla verdim. istediğin şeyi verebilirsin.
Yani var.
nasil yani hocam? yanlis anlamadiysam bu dedigini yapinca zaten bi objenin icinde olan degerleri baska bi objeye tasimis oluyorum. halihazirda elimdeki objeden bi farki olmuyo ki o zaman ?
-
yolbulucu bunu yazdı
merhabalar
bana bir obje geliyor, içeriğini bilmiyorum.
ornegin :
kisi = {isim: 'ahmet', yas:33, urunler: [{id: 1, adet:3},{id:5, adet: 6}]}
bu objeyi alip ilk seviyedeki keylerden birer degisken yaratmak istiyorum.
isim, yas ve urunler isminde 3 degisken bekliyorum cikti olarak.
bu obje icinde gelecek keyleri bilmedigim icin const {isim, yas, urunler} = kisi seklinde yapinca isimi gormuyor. cunku keyleri bilmiyorum , herhangi bir sey olabilir bu keyler.
aradığım şey php deki su olay:
$isim = 'murat'
php de sunu yapinca:
${$isim} = "kral adam"
murat isminde bir degiskenimiz oluyor. $murat diye erisebiliyoruz.
"neden boyle bir sey istiyorsun? " diyecek olursaniz, kullaniciya ufak js kodlari yazabilmesi icin bir alan verdim. orda ufak hesaplamalar yapabiliyor. atiyorum "fiyat * 1.5" falan yapabiliyor. burda kullanacagim
let keys = Object.keys(kisi)
console.log({keys});
sana keyleri verecek. -
let obj = {
isim: 'ahmet',
yas:33,
urunler: [
{id: 1, adet:3},
{id:5, adet: 6}
]
};let keys = Object.keys(obj);
keys.forEach((key) => {
console.log(obj[key]);
})- "ahmet"
- 33
- [{ adet: 3, id: 1 }, { adet: 6, id: 5 }]
Hocam şunu demek istemiyorsun değil mi? obj[key] olarak da elemanlara erişebiliyorsun. key list için de Object.keys kullanabilirsin. Bu işine yaramazsa örneği daha net verebilirsen yardımcı olmaya çalışayım.
-
ya eval ile çözdüm, daha önce denemiştim ve olmamıştı, galiba typo falan yapmışım. @rakkoc la yazisirken tekrar denedim , yapabildim.
örnek olarak :
var row = {
name: 'ali',
surname: 'veli',
maas: 4500,
urunler: [{id: 3}]
}
for(var i = 0;i< Object.keys(row).length;i++){
var item = Object.keys(row)[i]
var code = "var " + item + "= row[item]"
eval(code)
}
console.log(name)
console.log(surname)
console.log(urunler)
direkt obje icindeki her seyi degisken olarak kullanabiliyorum artik,
maas * 1.5 yapabiliyorum vs. -
yolbulucu bunu yazdıby_Tet bunu yazdı
Hocam phpdeki olay gibi olsun dersen bütün işlemleri object üzerinde halledebilirsin;
const $ = {}
$.murat = "ali"
$.ali = "veli"
$[$.murat] === "veli" olacaktır
bütün işlemlerden sonra Object.keys($) yapacak olursak
['murat', 'ali'] şeklinde array verecektir.
Objenin sonundaki değişkeni almak istersem mesela
$[Object.keys($).slice(-1)[0]] veli değerini verecektir.
$'ı phpdeki değişken tanımlamanın başında kullanıldığı için benzetme amacıyla verdim. istediğin şeyi verebilirsin.
Yani var.
nasil yani hocam? yanlis anlamadiysam bu dedigini yapinca zaten bi objenin icinde olan degerleri baska bi objeye tasimis oluyorum. halihazirda elimdeki objeden bi farki olmuyo ki o zaman ?
farki olmuyor evet, birebir karsiligi yok cunku.
javascriptte yazdigin her nane ozunde obje zaten, kasma o yuzden illa aynisi olacak diye.
sen neden illa variable olsun istiyorsun ondan bahset bize.
misal,
let obj = {elma: 1, armut: 2}
let aliases = Object.keys(obj)
console.log(obj[aliases[0]])dedigimizde bize elma degerini yani 1'i veriyor zaten. bu degeri de nereye pass gecmek istiyorsan gecebiliirsin.
illa Object.keys kullanmak zorunda degilsin. Object.values ya da Object.entries de kullanabilirsin.
-
yolbulucu bunu yazdı
ya eval ile çözdüm, daha önce denemiştim ve olmamıştı, galiba typo falan yapmışım. @rakkoc la yazisirken tekrar denedim , yapabildim.
örnek olarak :
var row = {
name: 'ali',
surname: 'veli',
maas: 4500,
urunler: [{id: 3}]
}
for(var i = 0;i< Object.keys(row).length;i++){
var item = Object.keys(row)[i]
var code = "var " + item + "= row[item]"
eval(code)
}
console.log(name)
console.log(surname)
console.log(urunler)
direkt obje icindeki her seyi degisken olarak kullanabiliyorum artik,
maas * 1.5 yapabiliyorum vs.yaklasimini degistir derim hocam.
var name = row[item]
var surname = row[item]
..yapiyorsun her seferinde. saglikli gorunmuyor, bi rahatsiz ediciligi var. bi de hata riskini dusurmek icin var yerine let/const oneriyorum.
const row = {
name: 'ali',
surname: 'veli',
maas: 4500,
urunler: [{id: 3}]
}
for(let i=0; i < Object.keys(row).length; i++){
let [key, val] = Object.entries(row)[i]
if (key === 'maas') console.log(key, val * 1.5)
}falan mesela.
end tarafından 30/Oca/22 20:16 tarihinde düzenlenmiştir -
end bunu yazdıyolbulucu bunu yazdı
ya eval ile çözdüm, daha önce denemiştim ve olmamıştı, galiba typo falan yapmışım. @rakkoc la yazisirken tekrar denedim , yapabildim.
örnek olarak :
var row = {
name: 'ali',
surname: 'veli',
maas: 4500,
urunler: [{id: 3}]
}
for(var i = 0;i< Object.keys(row).length;i++){
var item = Object.keys(row)[i]
var code = "var " + item + "= row[item]"
eval(code)
}
console.log(name)
console.log(surname)
console.log(urunler)
direkt obje icindeki her seyi degisken olarak kullanabiliyorum artik,
maas * 1.5 yapabiliyorum vs.yaklasimini degistir derim hocam.
var name = row[item]
var surname = row[item]
..yapiyorsun her seferinde. saglikli gorunmuyor, bi rahatsiz ediciligi var. bi de hata riskini dusurmek icin var yerine let/const oneriyorum.
const row = {
name: 'ali',
surname: 'veli',
maas: 4500,
urunler: [{id: 3}]
}
for(let i=0; i < Object.keys(row).length; i++){
let [key, val] = Object.entries(row)[i]
if (key === 'maas') console.log(key, val * 1.5)
}falan mesela.
let [key, val] = Object.entries(row)[i]
şu satırı anlamadım ?
-
o satir da object destruction yapiyor.
let [a, b] = [0, 1] demek,
let a = 0
let b = 1
demek.
Object.entries orada bize ["armut", "1"] falan donduruyor [key, value] seklinde.