Parastoo Ebrahimi
3 سال پیش توسط Parastoo Ebrahimi مطرح شد
5 پاسخ

حذف آرایه در صورت خالی بودن آرایه داخل اون

سلام. من یک لیست دارم. بعضی اوقات قسمت children آرایه خالی دریافت میکنم. میخوام اگه آرایه خالی بود کلا آبجکت داخلی حدف بشه

const items= [{name:"test1",children:[{name:"child1", children:[{name:"sub-child1"}]},{name:"child2", children:[]}]}]

یعنی آرایه بالا باید تغیییر پیدا کنه به

const items= [{name:"test1",children:[{name:"child1", children:[{name:"sub-child1"}]}]}]

ممنون میشم کمکم کنید
@kamran.davar


ثبت پرسش جدید
کامران داور
تخصص : Front-end developer
@kamran.davar 3 سال پیش مطرح شد
2

سلام. این به صورت تو در تو تا بینهایت delete رو انجام میده.

    const items = [
        {
            name: 'test1',
            children: [
                { name: 'child1', children: [{ name: 'sub-child1' }] },
                { name: 'child2', children: [] },
            ],
        },
    ];
    const recursiveDelete = (arr) => {
        arr.map((item, index) => {
            if (!item.children || item.children.length == 0) {
                arr.splice(index, 1);
            }
            if (item.children && item.children.length !== 0) {
                recursiveDelete(item.children);
            }
        });
    };

    recursiveDelete(items);
    console.log(items);

میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 3 سال پیش مطرح شد
0

اگر کدها رو بصورت تک خطی قرار ندید، و بصورت پله ای باشه، فهم متغیرتون ساده تر خواهد بود.


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 3 سال پیش مطرح شد
1

شما می تونید با استفاده از
https://jsonformatter.curiousconcept.com/
آرایه هاتون رو بهتر کنید.

[
   {
      "name":"test1",
      "children":[
         {
            "name":"child1",
            "children":[
               {
                  "name":"sub-child1"
               }
            ]
         },
         {
            "name":"child2",
            "children":[

            ]
         }
      ]
   }
]
[
   {
      "name":"test1",
      "children":[
         {
            "name":"child1",
            "children":[
               {
                  "name":"sub-child1"
               }
            ]
         }
      ]
   }
]

لطفا بگید خروجی از کجا میاد.


Parastoo Ebrahimi
تخصص : front-end developer
@parastooebrahimi 3 سال پیش مطرح شد
0

سوال رو هم بد پرسیدم. یک لیست مثل لیست زیر هست. میخوام اون رو جوری فیلتر کنم که isEmpty= true ها حذف بشن

let arr =[{name:"Report" , children:[{name:"KPI" , isEmpty:true} , {name:"fuel", isEmpty:fale}]}]

.
تخصص : برنامه نویس
@aaaaa1 3 سال پیش مطرح شد
1

سلام @parastooebrahimi

const items = [
    {
            name: "test1",
            children: [
            { name: "child1", children: [{ name: "sub-child1" }] },
            { name: "child2", children: [] },
            ],
    },
];

for (var i = 0; i < items[0].children.length  ; i++){

    if (items[0].children[i].children.length == 0){
       delete items[0].children[i] 
    }

}

کامران داور
تخصص : Front-end developer
@kamran.davar 3 سال پیش مطرح شد
2

سلام. این به صورت تو در تو تا بینهایت delete رو انجام میده.

    const items = [
        {
            name: 'test1',
            children: [
                { name: 'child1', children: [{ name: 'sub-child1' }] },
                { name: 'child2', children: [] },
            ],
        },
    ];
    const recursiveDelete = (arr) => {
        arr.map((item, index) => {
            if (!item.children || item.children.length == 0) {
                arr.splice(index, 1);
            }
            if (item.children && item.children.length !== 0) {
                recursiveDelete(item.children);
            }
        });
    };

    recursiveDelete(items);
    console.log(items);

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام