首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript -如何根据定义的坐标修改复杂对象

Javascript -如何根据定义的坐标修改复杂对象
EN

Stack Overflow用户
提问于 2018-10-29 07:53:32
回答 1查看 94关注 0票数 1

我有一个Javascript对象,其形状如下:

代码语言:javascript
复制
      obj = {
            'any': [
                'someString',
                {
                    'all': [
                        'another',
                        'andAnother',
                        {
                            'any': [
                                'user',
                                'id',
                                {
                                    'all': [
                                        'yes',
                                        'no'
                                    ]
                                }
                            ]
                        }
                    ]
                },
                'test'
            ]
        }

上面的对象只是一个例子。基本上,所有对象都必须有“all”或“any”键和一个值,该值是一个仅包含字符串或对象的数组。每个数组只能有一个对象。对象可以或多或少地复杂,但必须遵循这种结构。

我想根据如下格式的字符串(或数组或数组组成的数组-> )从复杂对象中删除元素:

代码语言:javascript
复制
"[any][1][all][2][any][2][all][1]"

anyallanyall定义了字符串'no‘在对象中的位置,因此应该将其删除。(obj[any][1][all][2][any][2][all][1] === 'no')

我希望这是有意义的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-29 08:05:00

到目前为止,如果输入是一组键,这将是最简单的。然后,可以使用reduce遍历它们,每次访问累加器的适当键,传入初始值的输入对象。一旦到达倒数第二个键,就有了数组-使用splice删除所需索引处的项:

代码语言:javascript
复制
const obj = {
  'any': [
    'someString',
    {
      'all': [
        'another',
        'andAnother',
        {
          'any': [
            'user',
            'id',
            {
              'all': [
                'yes',
                'no'
              ]
            }
          ]
        }
      ]
    },
    'test'
  ]
};
const removePath = ['any', 1, 'all', 2, 'any', 2, 'all', 1];

const indexToSplice = removePath.pop();
const arr = removePath.reduce((a, key) => a[key], obj);
arr.splice(indexToSplice, 1);
console.log(obj);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53037132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档