lostyazilim
tr.link

Javascript object hakkında

5 Mesajlar 1.306 Okunma
lstbozum
tr.link

Abdullahx Abdullahx MW Aracı Kullanıcı
  • Üyelik 03.04.2019
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum Trabzon
  • Ad Soyad A** K**
  • Mesajlar 905
  • Beğeniler 393 / 395
  • Ticaret 3, (%100)
Aklımda bir şey var ama bir türlü yapamadım. Amacım class ı x olan bir checkbox a tıklandığı zaman class ı x olan bütün inputları each fonksiyonuna sokup, eğer o input seçili ise o inputun data-val değerindeki yazının değerini 1, değilse 0 olarak belirlemek ve bunları bir diziye yerleştirmek. Ama önemli olan key => value şeklinde olması. Sonra bunları object yapmak. Aslında each fonksiyonun içinde direkt object e key => value şeklinde depolayabilirse o da olur. En son bunları json formatına dönüştürücem. Ama çıkamadım işin içinden. Boş bir array içerisine push ile atama yapıyorum, daha sonra object e dönüştürünce anahtar değerleri 0,1,2.. Şeklinde geliyor. Şöyle örnek vermek gerekirse.








kodu için aşağıdaki js kodu çalıştığında



$(".x").on("click", function () {
let tercih = [];
$(".x").each(function () {
let a = $(this).data("val");
if ($(this).prop("checked")) {
//o andaki ($(this)) olan inputun data-val değerine 1 atasın
//mesela uc => 1
} else {
//o andaki ($(this)) olan inputun data-val değerine 0 atasın
}
});
// console.log({...tercih});
});

Çıktının şöyle bir şey olmasını istiyorum.

{"bir":1,"iki":0,"uc":1,"dort":1,"bes":0}
 

 


wmaraci
reklam

srkn12 srkn12 PHP - Javascript - Java Kullanıcı
  • Üyelik 28.03.2018
  • Yaş/Cinsiyet 27 / E
  • Meslek Bilişim
  • Konum Denizli
  • Ad Soyad S** K**
  • Mesajlar 411
  • Beğeniler 67 / 90
  • Ticaret 0, (%0)
İstediğin çıktıyı bu şekilde alabilirsin









<script>
function test() {
var obje = new Object();
var inp = document.getElementsByClassName('x').length;

for (var i = 0; i < inp; i++) {
var Vl = document.getElementsByClassName('x')[i].dataset.val;

var Nm = document.getElementsByClassName('x')[i].checked;

switch (Nm) {
case true:
Nm = 1;
break;
case false:
Nm = 0;
break;
}

obje[Vl] = Nm;

}
console.log(obje) //{bir: 1, iki: 0, uc: 0, dort: 1, bes: 1}

}

</script>
Abdullahx

kişi bu mesajı beğendi.

Abdullahx Abdullahx MW Aracı Kullanıcı
  • Üyelik 03.04.2019
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum Trabzon
  • Ad Soyad A** K**
  • Mesajlar 905
  • Beğeniler 393 / 395
  • Ticaret 3, (%100)
Teşekkür ediyorum, mantığını kavradım sanırım.
 

 


srkn12 srkn12 PHP - Javascript - Java Kullanıcı
  • Üyelik 28.03.2018
  • Yaş/Cinsiyet 27 / E
  • Meslek Bilişim
  • Konum Denizli
  • Ad Soyad S** K**
  • Mesajlar 411
  • Beğeniler 67 / 90
  • Ticaret 0, (%0)
Rica ederim.
 

 

wmaraci
wmaraci

fmdogancan fmdogancan WM Aracı Kullanıcı
  • Üyelik 22.09.2014
  • Yaş/Cinsiyet 29 / E
  • Meslek Yazılım
  • Konum İstanbul Avrupa
  • Ad Soyad F** D**
  • Mesajlar 46
  • Beğeniler 6 / 10
  • Ticaret 0, (%0)
Bu da başka bir çözüm olarak kalsın;


const result = [...document.querySelectorAll('input.x')].reduce((acc, curr) => ({...acc, [curr.dataset.val]: +curr.checked}), {});

console.log(result);


Test;
https://codepen.io/fatihmert/pen/abJWQoy?editors=1011
Abdullahx

kişi bu mesajı beğendi.

Github: https://github.com/fatihmert | CV: http://fatihmert.dev/        
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al