v2.5.2
Giriş yap

divleri içindeki veriye göre sıralamak

memdhaci
428 defa görüntülendi

merhaba, arrayin içindeki objelerden alınan veriler ile ve foreach ile alt alta listelenmiş divlerim var
divleri içlerindeki sayıya göre nasıl listelerim
örneğin divlerin içinde yazan sayı en büyük olan en üste geliyor

Cevap yaz
Cevaplar (7)
abdullahx
1025 gün önce
<button data-type="1" class="sirala">Sırala</button>
<button data-type="2" class="sirala">Eski Haline getir</button>

<div class="container">

</div>
  let array = [
            {
                value: 100
            },
            {
                value: 80
            },
            {
                value: 60
            },
            {
                value: 110
            }
        ],
        defaultOrders = [...array]

    const container = document.querySelector(".container")

    function compare(a, b) {
        if ( parseFloat(a.value) > parseFloat(b.value) ){
            return -1;
        }
        return 0;
    }


    [...document.querySelectorAll(".sirala")].forEach(buttons => {
      buttons.onclick = function() {
          this.dataset.type === '1' ? array.sort(compare) : array = [...defaultOrders]
          container.innerHTML = ''
          array.forEach(value => {
              let div = document.createElement("div")
              div.innerText = value.value
              container.appendChild(div)
          })
      }
    })

Bunu dener misin?

memdhaci
1025 gün önce

@abdullahx
arrayin içindeki objeleri butona basarak büyükten küçüğe sıralıyorum başka bir butona basınca da büyükten küçüğe sıralamadan önceki haline gelmesini istiyorum olay bu hocam

let array = [
  {
    value: 100
  },
  {
    value: 80
  },
  {
    value: 60
  },
  {
    value: 110
  },
]

function compare( a, b ) {
    if ( parseFloat(a.value) > parseFloat(b.value) ){
        return -1;
    }
    
  return 0;
}

$('button').click(function({
    array.sort( compare );
)};
abdullahx
1028 gün önce

Hocam hiçbir data vermeden cevap arıyorsunuz, gerçekten tatmin edici bir yanıt alabilmeyi umuyor musunz?

memdhaci
1028 gün önce

@house2k merhaba benim kodlarım js ile yazıldığı için ve php bilmediğim için attığın örneği anlayamadım

house2k
1028 gün önce

Merhaba istediğiniz sistem ile ilgili olarak aşağıdaki verdiğim örneği inceleyebilirsiniz.


<?php 
$urunler = array(
 0 => array(
 'URUN_AD' => 'Cep Telefonu',
 'URUN_FIYAT' => 1250.32,
 ),
 1 => array(
 'URUN_AD' => 'Bardak',
 'URUN_FIYAT' => 23.5,
 ),
 2 => array(
 'URUN_AD' => 'Masa',
 'URUN_FIYAT' => 352,
 ),
 3 => array(
 'URUN_AD' => 'Bilgisayar',
 'URUN_FIYAT' => 2499.99,
 )
);
 
$tmpArray = array(); // Sıralanmasını istediğimiz alanı buraya aktracağız
 
foreach($urunler as $key => $value){
 $tmpArray[$key] = $value['URUN_FIYAT'];
}
 
array_multisort($tmpArray, SORT_DESC, $urunler); // ESAS ALINACAK SIRALAMA DIZISI, SIRALAMA TİPİ, ANA DIZI
 
print_r($urunler); 
?>

Dip Not: Sorunuz veya yardıma ihtiyacanız olursa yazabilirsiniz. Sorununuzun çözülmesi halinde yorumu doğru işaretleyebilir ve bana sorunun çözüldüğüne dair bir doğrulama sağlayabilirsiniz. Eğerki sorununuz çözüme kavuşmadı ise sorununuzu yazıp bu yorumu beğenirseniz tekrardan sizlere geri dönüş sağlarım.

memdhaci
1029 gün önce

@hasanablak objeleri sıralıyor fakat ben bir butona basınca arrayi sort ediyorum
başka bir butona basınca geri eski haline döndürmek için ne yapmalıyım?

hasanablak
1033 gün önce

function compare( a, b ) {
if ( a.last_nom < b.last_nom ){

return -1;

}
if ( a.last_nom > b.last_nom ){

return 1;

}
return 0;
}

objs.sort( compare );