Javascript 重命名数组的嵌套键

Javascript 重命名数组的嵌套键,javascript,angularjs,Javascript,Angularjs,我需要更改嵌套数组的值才能使用插件 我的JSON如下所示: [{"Id":13,"Name":"sadas","Users":[],"Managers":[],"Departments":[{"Id":14,"Name":"hgjghjghjg","Users":[],"Managers":[],"Departments":[{"Id":16,"Name":"kjk","Users":[],"Managers":[],"Departments":[{"Id":17,"Name":"vcxv",

我需要更改嵌套数组的值才能使用插件

我的JSON如下所示:

[{"Id":13,"Name":"sadas","Users":[],"Managers":[],"Departments":[{"Id":14,"Name":"hgjghjghjg","Users":[],"Managers":[],"Departments":[{"Id":16,"Name":"kjk","Users":[],"Managers":[],"Departments":[{"Id":17,"Name":"vcxv","Users":[],"Managers":[],"Departments":[]}]}]},{"Id":15,"Name":"p[op[","Users":[],"Managers":[],"Departments":[]}]}]
要使用angular插件,需要将每个键
部门重命名为children
,并从键中删除
“”

我尝试使用Json.stringify,并替换默认字符串中的like

var objToSend = JSON.stringify(response.Departments);
var str = objToSend.replace("\"Departments\":", "\"children\":");
$rootScope.tree_data = str;
但它对我来说不起作用,它只是更改数组的第一个键,而不是嵌套和返回

[{"Id":13,"Name":"sadas","Users":[],"Managers":[],"children":[{"Id":14,"Name":"hgjghjghjg","Users":[],"Managers":[],"Departments":[{"Id":16,"Name":"kjk","Users":[],"Managers":[],"Departments":[{"Id":17,"Name":"vcxv","Users":[],"Managers":[],"Departments":[]}]}]},{"Id":15,"Name":"p[op[","Users":[],"Managers":[],"Departments":[]}]}]

替换方法不起作用,因为替换只会更改第一次出现的内容。不过,你可以用正则表达式

或者(在我看来)更好的方法是使用

像这样的

function rename (obj) {
  for(var prop in obj) {

    if (Array.isArray(obj[prop])) {
        obj[prop] = obj[prop].map(rename);
    }

    if (prop === 'Departments') {
      obj.children = obj[prop];
      delete obj[prop];
    }
  }

    return obj;
};

var y = x.map(rename);
但是,这只会递归地检查数组。不是嵌套的对象属性。但是,从您的数据来看,它似乎只是数组

例如,对于这样的结构,这将不起作用

var data = {
  "Id": 17,
  "Name": "vcxv",
  "Users": [],
  "Managers": [],
  "Departments": {
    "Id": 18,
    "Name": "trollol",
    "Users": [],
    "Managers": [],
    "Departments": {}
  }
};
演示小提琴:


编辑:更新,您还可以使用
Object.keys
获取数组中的对象键。不太确定这里是否有任何好处,但是超过
for in
甚至可能会影响性能<代码>对象。键在函数组合和方法链接等方面更有用


但这里有一把最新的小提琴

嗨,欢迎来到StackOverflow。不幸的是,这不是一个代码编写服务,您需要自己尝试一些东西,并在遇到困难时提出特定的问题。