Computer >> Máy Tính >  >> Lập trình >> Javascript

Xóa mục khỏi một mảng lồng nhau theo chỉ số trong JavaScript

Giả sử, chúng ta có một mảng lồng nhau của các đối tượng như thế này -

const arr = [
   { value: 'some value' },
   {
      array: [
         { value: 'some value' },
         {
            array: [
               { value: 'some value' },
               { value: 'some value' },
            ],
         },
         { value: 'some value' },
         {
            array: [
               { value: 'some value' },
               {
                  array: [
                     { value: 'delete me' },
                     { value: 'some value' },
                  ]
               },
            ],
         },
      ],
   }
];

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng như đối số đầu tiên và một mảng chỉ số làm đối số thứ hai.

Hàm của chúng ta sẽ xóa thuộc tính giá trị ở tất cả các chỉ số được chỉ định bởi mảng (đối số thứ hai).

Ví dụ

Mã cho điều này sẽ là -

const arr = [
   { value: 'some value' },
   {
      array: [
         { value: 'some value' },
         {
            array: [
               { value: 'some value' },
               { value: 'some value' },
            ],
         },
         { value: 'some value' },
         {
            array: [
               { value: 'some value' },
               {
                  array: [
                     { value: 'delete me' },
                     { value: 'some value' },
                  ]
               },
            ],
         },
      ],
   }
];
const keys = [1, 3, 1, 0];
const getKeys = (arr, keys) => {
   const recursiveFind = (arr, level) => {
      const res = [];
      arr.forEach((el, ind) => {
         if (keys[level] !== ind) {
            return res.push(el);
         };
         if (level + 1 !== keys.length && el.array) {
            res.push({ array: recursiveFind(el.array, level + 1) });
         };
      });
      return res;
   };
   return recursiveFind(arr, 0);
};
console.log(JSON.stringify(getKeys(arr, keys), undefined, 4));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[
   {
      "value": "some value"
   },
   {
      "array": [
         {
            "value": "some value"
         },
         {
            "array": [
               {
                  "value": "some value"
               },
               {
                  "value": "some value"
               }
            ]
         },
         {
            "value": "some value"
         },
         {
            "array": [
               {
                  "value": "some value"
               },
               {
                  "array": [
                     {
                        "value": "some value"
                     }
                  ]
               }
            ]
         }
      ]
   }
]