根据索引从 JavaScript 中的嵌套数组中移除项目


假设我们有一个这样的嵌套对象数组 -

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' },
                  ]
               },
            ],
         },
      ],
   }
];

我们需要编写一个 JavaScript 函数,该函数将第一个参数作为此类数组,将第二个参数作为索引数组。

我们的函数应当删除所有由数组(第二个参数)指定的索引上的 value 属性。

示例

代码如下 -

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));

输出

控制台中的输出如下 -

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

更新时间:2020 年 11 月 23 日

1000 多次访问

开启你的 职业生涯

完成课程认证

开始学习
广告