darness adlı üyeden alıntı: mesajı görüntüle
jsde bir sınıf hazırladım filtrelemeyi böyle yapabilirsiniz

class CustomFilterize{
    constructor(maxPage = 1) {
    this.start = 1;  
    this.totalCount = 0;
    this.maxPage = maxPage;
    this.limit = 100;
    this.sortBy = 'market_cap';
    this.sortType = 'desc';
    this.convert = 'USD,BTC,ETH';
    this.cryptoType = 'all';
    this.tagType = 'all';
    this.audited = 'false';
    this.aux = 'ath,atl,high24h,low24h,num_market_pairs,cmc_rank,date_added,max_supply,circulating_supply,total_supply,volume_7d,volume_30d,self_reported_circulating_supply,self_reported_market_cap';

    this.data = [];
    this.filters = [];
    this.completeData = null;
  }
    
   async page(limit = 3,start = 0){
        if(this.totalCount != 0){
            const maxPage = Math.round( this.totalCount / this.limit);
            if(limit > maxPage) limit = maxPage;
        }  
        
        for(let i = 1 ; i <= limit; i++){
             this.start = ((i-1) * this.limit) + 1 + start;
             const data = await this.get();
             this.totalCount = parseInt(data.data.totalCount);
             this.data.push(data);  
        }

        return this.data;
      
   }

   filter(attribute,value , equal = '='){

    this.filters.push({
        key:attribute,value:value,condition:equal,status: false
    })
        
      
    
    return this;
      
   }

   async searchPage(page = 1){
        
       if(this.completeData == null){
           this.completeData = await this.page(page);
          
       }else if(this.completeData.length < page){
          let start = this.completeData.length  * this.limit;
          let pages = page - this.completeData.length;
          const p = await this.page(pages,start);
          this.completeData = [...this.completeData,...p];  
       }else if(this.completeData.length > page){

           return this.process(this.completeData.slice(0,page))
       }

     return this.process(this.completeData);
      
   }
   process(data){
        let filterList = [];
        for(let i = 0; i < data.length;i++){
            const list = data[i].data.cryptoCurrencyList;
            for(let k = 0; k < list.length;k++ ){

                if(this.equal(list[k])){
                    /* şarrtları karşılıyosa*/
                   filterList.push(list[k])
                }
                
            }
            
        }

       this.filters = [];
       console.table(filterList);
        return filterList;
      
   }
   equal(item){

       if(this.filters.length == 0) return true;
    
       for(let i = 0; i < this.filters.length;i++){
           let filter = this.filters[i];
           filter.status = false;
           if(item[filter.key]){
                if(filter.condition == 'between'){
                    if(Array.isArray(filter.value) && filter.value.length == 2){

                        filter.status = item[filter.key] >= filter.value[0] && item[filter.key] <= filter.value[1];
                        
                    }else{
                        console.error(`${filter.key} elamanı between için en az 2 elaman bulunmadığından kaldırıldı.`);
                        delete this.filters[i];
                        i--;
                    }
                }else if(filter.condition == '<'){
                    filter.status = item[filter.key] < filter.value;
                }else if(filter.condition == '<='){
                    filter.status = item[filter.key] <= filter.value;
                }else if(filter.condition == '>'){

                    filter.status = item[filter.key] > filter.value;
                }else if(filter.condition == '>='){

                    filter.status = item[filter.key] >= filter.value;
                }else if(filter.condition == '='){
                    filter.status = item[filter.key] == filter.value;
                }else if(filter.condition == '=!' || filter.condition == '<>'){
                    filter.status = item[filter.key] != filter.value;
                }else{
                     console.error(`${filter.condition} bu koşullar için uyarlanmamıştır ve sorguya dahil edilmedi.`);
                    delete this.filters[i];
                    i--;
                }
              
           }else{
                
                   console.error(`${filter.key}  adında bir elaman bulunamadığı için arama kriterlerinden kaldırıldıi.`);
                    delete this.filters[i];
                    i--;

            }
          
       }

       if(this.filters.length == 0) return true;

       return this.filters.every(item => item.status);
      
   }

   async get(){

        return await fetch(`https://api.coinmarketcap.com/data-api/v3/cryptocurrency/listing?start=${this.start}&limit=${this.limit}&sortBy=${this.sortBy}&sortType=${this.sortType}&convert=${this.convert}&cryptoType=${this.cryptoType}&tagType=${this.tagType}&audited=${this.audited}&aux=${this.aux}`, {
      "headers": {
        "accept": "application/json, text/plain, */*",
        "accept-language": "tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7",
        "platform": "web",
        "sec-ch-ua": "\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"102\", \"Google Chrome\";v=\"102\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "sec-fetch-dest": "empty",
        "sec-fetch-mode": "cors",
        "sec-fetch-site": "same-site",
        "x-request-id": "06b9969b3ada4f3ca7ef99af3145af84"
      },
      "referrer": "https://coinmarketcap.com/",
      "referrerPolicy": "origin-when-cross-origin",
      "body": null,
      "method": "GET",
      "mode": "cors",
      "credentials": "omit"
    }).then(response => response.json())

   }



}

/*

ELAMAN DEĞERLERİ BUNLAR
ELAMAN ADI : ELAMAN DEĞERİ


ath: 68789.62593892214
atl: 65.5260009765625
circulatingSupply: 19059018
cmcRank: 1
dateAdded: "2013-04-28T00:00:00.000Z"
high24h: 30117.743447499455
id: 1
isActive: 1
isAudited: false
lastUpdated: "2022-06-05T18:58:00.000Z"
low24h: 29574.44953148884
marketPairCount: 9478
maxSupply: 21000000
name: "Bitcoin"
quotes: (3) [{…}, {…}, {…}]
selfReportedCirculatingSupply: 0
slug: "bitcoin"
symbol: "BTC"
totalSupply: 19059018



*/

const custom = new CustomFilterize();
Kullanımı ;
// ath değeri 68789 den küçük ve isActive değeri 1 olanları 1 sayfa boyuncu filtere
// 1 sayfa değeri limit 100 olarak belirlenmiştir 10 sayfa 10 * 100 değer

customFilter.filter("ath",68789 ,"<").filter("isActive","1").searchPage(1)
// ath değeri 1000 ile 5000 arasında ve isActive değeri 1 olanlarır 1 sayfada filtrele
customFilter
.filter("ath",[1000,5000],"between")
.filter("isActive","1")
.searchPage(1)
// arama kriterleri eşittir,küçüktür , büyüktür , büyük eşit , küçük eşit ,eşit değil , arasında
// = ,< , <= ,> , >= , between , !=
.filter("maxSupply ",[1000,5000],"between").searchPage(1)
Sonuc tablo olarak listelenir.


iyi forumlar..

Forumda ücretsiz yardımlaşma bitti diyenler bu postları görmüyor herhalde. Elinize sağlık.