javascript - 仅删除嵌套对象中的特定键

标签 javascript arrays typescript

我是 json 和 javascript 新手,我有以下输入:

    var input= {
    "careerLevelGroups": [
        {
            "201801": 58,
            "201802": 74,
            "careerLevel": "Analyst",
            "careerLevels": [
                {
                    "201801": 29,
                    "201802": 37,
                    "careerID": "10000100"
                },
                {
                    "201801": 29,
                    "201802": 37,
                    "careerID": "10000110"
                }
            ]
        },
        {
            "201801": 58,
            "201802": 74,
            "careerLevel": "Consultant",
            "careerLevels": [
                {
                    "201801": 29,
                    "201802": 37,
                    "careerID": "10000080"
                },
                {
                    "201801": 29,
                    "201802": 37,
                    "careerID": "10000090"
                }
            ]
        }
    ]
};

我需要创建这个结果:

    var result = {
  [

        {
           "careerLevel": "Analyst",
            "careerLevels": [
                {
                    "201801": 29,
                    "201802": 37,
                    "careerID": "10000100"
                },
                {
                    "201801": 29,
                    "201802": 37,
                    "careerID": "10000110"
                }
            ]
        },
        {

            "careerLevel": "Consultant",
            "careerLevels": [
                {
                    "201801": 29,
                    "201802": 37,
                    "careerID": "10000080"
                },
                {
                    "201801": 29,
                    "201802": 37,
                    "careerID": "10000090"
                }
            ]
        }
    ]
}

我认为我需要做一些事情,比如我只需要careerLevel和careerLevels属性(其余的都应该删除)。我尝试了 json 的循环结构和删除命令,但我没有获得正确的格式。

 let clJson = input.careerLevelGroups.forEach(element => {
  let keysToDelete = Object.keys(element).filter( // return keys with careerLevel and careerLevels);
 // delete keys

});

最佳答案

使用delete运算符删除键:

var input = {
  "careerLevelGroups": [{
      "201801": 58,
      "201802": 74,
      "careerLevel": "Analyst",
      "careerLevels": [{
          "201801": 29,
          "201802": 37,
          "careerID": "10000100"
        },
        {
          "201801": 29,
          "201802": 37,
          "careerID": "10000110"
        }
      ]
    },
    {
      "201801": 58,
      "201802": 74,
      "careerLevel": "Consultant",
      "careerLevels": [{
          "201801": 29,
          "201802": 37,
          "careerID": "10000080"
        },
        {
          "201801": 29,
          "201802": 37,
          "careerID": "10000090"
        }
      ]
    }
  ]
};

const result = input.careerLevelGroups;
result.forEach(obj => {
  Object.keys(obj).forEach(key => {
    if (key !== 'careerLevel' && key !== 'careerLevels') delete obj[key];
  })
});
console.log(result);

请注意,这会改变原始对象 - 它不会创建副本。

关于javascript - 仅删除嵌套对象中的特定键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49579662/

相关文章:

javascript - 在 Javascript/node.js 中的模块之间共享变量?

javascript - 在 JavaScript 中匹配 MySQL 的 utf8_general_ci 排序顺序

java - 有没有办法在每一行打印出数组中不同数量的元素

javascript - 在 SlateJS 中,当存在多个编辑器时,如何将焦点更改为特定的编辑器?

javascript - 编译 Typescript 时如何导出模块类型

javascript - 用户界面不反射(reflect)突变后的变化

javascript - 如何使用 raphael 图形使用 for 循环绘制由从小到大的矩形组成的塔?

c# - 表示大字节数组的最佳方式

arrays - 在 Angular cli中将json字符串转换为对象数组

angular - 通过重定向登录后,Firebase Datasnapshot Observable 未立即更新