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

5 روز پیش توسط Parastoo Ebrahimi آپدیت شد
آفلاین
user-avatar
Parastoo Ebrahimi ( 45429 تجربه )
3 هفته پیش
تخصص : front-end developer

لینک کوتاه اشتراک گذاری

0

سلام. من یک لیست دارم. بعضی اوقات قسمت 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

بهترین پاسخ
آفلاین
user-avatar
کامران داور
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);
آفلاین
user-avatar
میلاد-م ( 251985 تجربه )
3 هفته پیش
تخصص : طراح رابط کاربری - Front-End

لینک کوتاه اشتراک گذاری

0

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

آفلاین
user-avatar
moha li ( 97165 تجربه )
3 هفته پیش
تخصص : توسعه دهنده لاراول و Vue

لینک کوتاه اشتراک گذاری

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"
               }
            ]
         }
      ]
   }
]

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

آفلاین
user-avatar
Parastoo Ebrahimi ( 45429 تجربه )
2 هفته پیش
تخصص : front-end developer

لینک کوتاه اشتراک گذاری

0

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

let arr =[{name:"Report" , children:[{name:"KPI" , isEmpty:true} , {name:"fuel", isEmpty:fale}]}]
آفلاین
user-avatar
ادیب ( 56520 تجربه )
2 هفته پیش
تخصص : برنامه نویس

لینک کوتاه اشتراک گذاری

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] 
    }

}
آفلاین
user-avatar
کامران داور ( 22866 تجربه )
2 هفته پیش
تخصص : Front-end developer

لینک کوتاه اشتراک گذاری

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);
برای ارسال پاسخ لازم است، ابتدا وارد سایت شوید.