راکت
حل شده

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

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

ثبت پرسش جدید

پاسخ‌ها

5
کامران داور
کامران داور
@kamran.davar

تخصص: Front-end developer

بهترین پاسخ

سلام. این به صورت تو در تو تا بینهایت 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);
میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

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

moha li
moha li
@mohaligateway

تخصص: توسعه دهنده لاراول و Vue

شما می تونید با استفاده از
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
Parastoo Ebrahimi
@parastooebrahimi

تخصص: front-end developer

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

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

تخصص: برنامه نویس

سلام @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] 
    }

}

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

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