• 28-06-2022, 19:31:26
    #1
    Merhabalar arkadaşlar elimde bir json verisi var veritabanından çekiyorum.
    İstediğim kısaca şu;

    Tüm kategoriler var : a,b,c,d,e,f,g... gibi
    Seçili kategoriler var: c,d gibi

    frontend kısmında ise seçili olmayanları göstermek istiyorum bunu nasıl yapabilirim filtreleme işlemine soktum fakat bir türlü yapamadım.

    Yapmak istediğimi örnek olarak göstereyim

    Tümü :
    {
        _id: new ObjectId("62b88c4808639376b66eacb5"),
        name: 'Uncategorized',
        image: '/assets/images/files/1656261704367-gölgeslider.png',
        status: true,
        createdAt: 2022-06-26T16:41:44.381Z,
        updatedAt: 2022-06-26T16:41:51.838Z,
        slug: 'uncategorized'
      },
      {
        _id: new ObjectId("629f46dbcca34319f3de01d7"),
        name: 'Aesthetic and Plastic Surgery',
        image: ' ',
        createdAt: 2022-06-07T12:38:51.529Z,
        updatedAt: 2022-06-26T15:37:56.867Z,
        slug: 'aesthetic-and-plastic-surgery',
        status: true
      },
      {
        _id: new ObjectId("629f46becca34319f3de01d5"),
        name: 'Dental Treatments',
        image: '/assets/images/files/1654613601129-anasayfaslider2.png',
        createdAt: 2022-06-07T12:38:22.587Z,
        updatedAt: 2022-06-07T14:53:21.154Z,
        slug: 'dental-treatments',
        status: true
      }
    Seçili olanlar :
      {
        _id: new ObjectId("629f46becca34319f3de01d5"),
        name: 'Dental Treatments',
        image: '/assets/images/files/1654613601129-anasayfaslider2.png',
        createdAt: 2022-06-07T12:38:22.587Z,
        updatedAt: 2022-06-07T14:53:21.154Z,
        slug: 'dental-treatments',
        status: true
      }
    benim istediğim ise :
    {
        _id: new ObjectId("62b88c4808639376b66eacb5"),
        name: 'Uncategorized',
        image: '/assets/images/files/1656261704367-gölgeslider.png',
        status: true,
        createdAt: 2022-06-26T16:41:44.381Z,
        updatedAt: 2022-06-26T16:41:51.838Z,
        slug: 'uncategorized'
      },
      {
        _id: new ObjectId("629f46dbcca34319f3de01d7"),
        name: 'Aesthetic and Plastic Surgery',
        image: ' ',
        createdAt: 2022-06-07T12:38:51.529Z,
        updatedAt: 2022-06-26T15:37:56.867Z,
        slug: 'aesthetic-and-plastic-surgery',
        status: true
      },
    yani seçili olanı bana göstermemiş oldu bu şekilde.

    bunu nasıl yapabilirim.
  • 28-06-2022, 19:38:04
    #2
    Bu şekilde yaptım. Kendi db sorgularınıza göre categories ve selectedCategories'i düzenlerseniz çalışır.

          const categories = [
             {
                _id: "62b88c4808639376b66eacb5",
                name: "Uncategorized",
                image: "/assets/images/files/1656261704367-gölgeslider.png",
                status: true,
                createdAt: "2022-06-26T16:41:44.381Z",
                updatedAt: "2022-06-26T16:41:51.838Z",
                slug: "uncategorized",
             },
             {
                _id: "629f46dbcca34319f3de01d7",
                name: "Aesthetic and Plastic Surgery",
                image: " ",
                createdAt: "2022-06-07T12:38:51.529Z",
                updatedAt: "2022-06-26T15:37:56.867Z",
                slug: "aesthetic-and-plastic-surgery",
                status: true,
             },
             {
                _id: "629f46becca34319f3de01d5",
                name: "Dental Treatments",
                image: "/assets/images/files/1654613601129-anasayfaslider2.png",
                createdAt: "2022-06-07T12:38:22.587Z",
                updatedAt: "2022-06-07T14:53:21.154Z",
                slug: "dental-treatments",
                status: true,
             },
          ];
          const selectedCategories = [
             {
                _id: "629f46becca34319f3de01d5",
                name: "Dental Treatments",
                image: "/assets/images/files/1654613601129-anasayfaslider2.png",
                createdAt: "2022-06-07T12:38:22.587Z",
                updatedAt: "2022-06-07T14:53:21.154Z",
                slug: "dental-treatments",
                status: true,
             },
          ];
          let notSelectedCategories = categories.filter(
             (category) => !selectedCategories.some((cat) => cat._id === category._id)
          );
  • 28-06-2022, 19:45:12
    #3
    ErenDemir adlı üyeden alıntı: mesajı görüntüle
    Bu şekilde yaptım. Kendi db sorgularınıza göre categories ve selectedCategories'i düzenlerseniz çalışır.

          const categories = [
             {
                _id: "62b88c4808639376b66eacb5",
                name: "Uncategorized",
                image: "/assets/images/files/1656261704367-gölgeslider.png",
                status: true,
                createdAt: "2022-06-26T16:41:44.381Z",
                updatedAt: "2022-06-26T16:41:51.838Z",
                slug: "uncategorized",
             },
             {
                _id: "629f46dbcca34319f3de01d7",
                name: "Aesthetic and Plastic Surgery",
                image: " ",
                createdAt: "2022-06-07T12:38:51.529Z",
                updatedAt: "2022-06-26T15:37:56.867Z",
                slug: "aesthetic-and-plastic-surgery",
                status: true,
             },
             {
                _id: "629f46becca34319f3de01d5",
                name: "Dental Treatments",
                image: "/assets/images/files/1654613601129-anasayfaslider2.png",
                createdAt: "2022-06-07T12:38:22.587Z",
                updatedAt: "2022-06-07T14:53:21.154Z",
                slug: "dental-treatments",
                status: true,
             },
          ];
          const selectedCategories = [
             {
                _id: "629f46becca34319f3de01d5",
                name: "Dental Treatments",
                image: "/assets/images/files/1654613601129-anasayfaslider2.png",
                createdAt: "2022-06-07T12:38:22.587Z",
                updatedAt: "2022-06-07T14:53:21.154Z",
                slug: "dental-treatments",
                status: true,
             },
          ];
          let notSelectedCategories = categories.filter(
             (category) => !selectedCategories.some((cat) => cat._id === category._id)
          );
    Böyle kullanınca sorunsuz çalışıyor ama veritabanından çekerken hepsini getiriyor.
  • 28-06-2022, 19:47:29
    #4
    kaptan55 adlı üyeden alıntı: mesajı görüntüle
    Böyle kullanınca sorunsuz çalışıyor ama veritabanından çekerken hepsini getiriyor.
    categories kısmı tüm kategorileriniz olacak. Tüm kategorilerinizi ona yazın kullanıcı bir şey seçtiğinde ise selectedCategories'e o kategoriyi push'layın.
  • 28-06-2022, 19:49:05
    #5
    ErenDemir adlı üyeden alıntı: mesajı görüntüle
    categories kısmı tüm kategorileriniz olacak. Tüm kategorilerinizi ona yazın kullanıcı bir şey seçtiğinde ise selectedCategories'e o kategoriyi push'layın.
    Sizinkine göre uyarladım ama nedense hepsini gösteriyor.
    const categories = category.map(cat => cat);
    const selectedCategories = selectTreatment.category.map(cat=>cat);
        
        let notSelectedCategories = categories.filter(
          (categoryy) => !selectedCategories.some((cat) => cat._id === categoryy._id)
       );
  • 28-06-2022, 19:52:56
    #6
    kaptan55 adlı üyeden alıntı: mesajı görüntüle
    Sizinkine göre uyarladım ama nedense hepsini gösteriyor.
    const categories = category.map(cat => cat);
    const selectedCategories = selectTreatment.category.map(cat=>cat);
        
        let notSelectedCategories = categories.filter(
          (categoryy) => !selectedCategories.some((cat) => cat._id === categoryy._id)
       );
    categories'i ve selectedCategories'i konsola logladığınızda çıkan sonucu paylaşabilir misiniz?
  • 28-06-2022, 19:56:33
    #7
    ErenDemir adlı üyeden alıntı: mesajı görüntüle
    categories'i ve selectedCategories'i konsola logladığınızda çıkan sonucu paylaşabilir misiniz?
    Tamamdır hocam şimdi buldum sorunu tip dönüşümünden dolayı hatayı vermiş sunucu tarafından object olarak gönderiyor siz "===" kullandığınız için hatalı gösterim sağlamış sorun çözüldü çok teşekkür ederim
    some kısmını çok anlamadım yardımcı olur musunuz tam olarak oradaki kod ne işe yaradı.(daha önce kullanmadımda some metodunu)

    Çalışan hali:
    let notSelectedCategories = category.filter(
          (category) => !selectTreatment.category.some((cat) => cat._id.toString() === category._id.toString())
    );
  • 28-06-2022, 20:00:43
    #8
    kaptan55 adlı üyeden alıntı: mesajı görüntüle
    Tamamdır hocam şimdi buldum sorunu tip dönüşümünden dolayı hatayı vermiş sunucu tarafından object olarak gönderiyor siz "===" kullandığınız için hatalı gösterim sağlamış sorun çözüldü çok teşekkür ederim
    some kısmını çok anlamadım yardımcı olur musunuz tam olarak oradaki kod ne işe yaradı.(daha önce kullanmadımda some metodunu)
    Some array içerisindeki en az bir obje içindeki koşulu sağlıyorsa true değeri döndürüyor. Find kullanıp sağlayan ilk objeyi veya filter kullanıp sağlayan tüm objeleri alabiliyorsunuz. Daha fazlasını MDN'de bulabilirsiniz.
  • 28-06-2022, 20:13:20
    #9
    ErenDemir adlı üyeden alıntı: mesajı görüntüle
    Some array içerisindeki en az bir obje içindeki koşulu sağlıyorsa true değeri döndürüyor. Find kullanıp sağlayan ilk objeyi veya filter kullanıp sağlayan tüm objeleri alabiliyorsunuz. Daha fazlasını MDN'de bulabilirsiniz.
    Çok teşekkür ederim hocam kısa ve işlevsel bir şekilde çözdünüz sorunu.