返回新形式的数组-javascript

返回新形式的数组-javascript,javascript,arrays,json,object,Javascript,Arrays,Json,Object,我的数据: { "rows": [ { "id": 3, "code": "airtel121", "position": "manager", "salary": "25000", "login": { "id": 4, "username": "sameer", "firstName": "Mohamed", "lastName": "Sameer",

我的数据:

{
  "rows": [
    {
      "id": 3,
      "code": "airtel121",
      "position": "manager",
      "salary": "25000",
      "login": {
        "id": 4,
        "username": "sameer",
        "firstName": "Mohamed",
        "lastName": "Sameer",
        "code": "airtel121",
      }
    },
    {
      "id": 7,
      "code": "airtel121",
      "position": null,
      "salary": null,
      "login": {
        "id": 8,
        "username": "annamalai",
        "firstName": "Anna",
        "lastName": "malai",
        "code": "airtel121",
      }
    }
  ]
}
我的预期结果:

{
  "rows": [
    {
      "id": 4,
      "username": "sameer",
      "firstName": "Mohamed",
      "lastName": "Sameer",
      "code": "airtel121",
      "staffs": [
        {
          "id": 3,
          "code": "airtel121",
          "position": "manager",
          "salary": "25000",
        }
      ]
    },
    {
      "id": 8,
      "username": "annamalai",
      "firstName": "Anna",
      "lastName": "malai",
      "code": "airtel121",
      "staffs": [
        {
          "id": 7,
          "code": "airtel121",
          "position": null",
          "salary": null",
        }
      ]
    }
  ]
}
我试过了,但只有我得到了第一个对象,检查我的小提琴:

这是否可以使用for-loop进行循环,或者可以使用lodash进行循环

检查我上面的jsbin链接中的代码


我在项目中使用ES6编码方式,因此我使用了spread运算符。

您可以使用
map
从旧对象的
数组创建新对象的
数组:

let newObj = {
  rows: oldObj.rows.map(row => {                                     // map the rows of the old object into the rows of the new object
    let { login, ...rest } = row;                                    // for each object/row get the login object as 'login' and the rest of the props as 'rest'
    return { ...login, staffs: [rest] };                             // return a new object that has the props of 'login' and an additional prop 'staffs' which is an array containing 'rest'
  })
};
示例:

let oldObj={“rows”:[{“id”:3,“code”:“airtel121”,“position”:“manager”,“salary”:“25000”,“login”:{“id”:4,“username”:“sameer”,“firstName”:“Mohamed”,“lastName”:“sameer”,“code”:“airtel121”},{“id”:7,“code”:“airtel121”,“position null”,“salary”:null,“login”:{“id”:8,“username”:“annamalai”,“firstName”:“Anna”,“lastName”:“malai”,“code”:“airtel121”};
设newObj={
行:oldObj.rows.map(行=>{
让{login,…rest}=row;
返回{…登录,职员:[rest]};
})
};

console.log(newObj)你不是已经在这里问过同样的问题了吗:是的,但是我遇到了对象循环的问题,所以我只是再次问,这是一个不同的问题。我想你应该接受最后的答案,看看你是否能得到一个可能的重复的is rest is ES6?@MohamedSameer,不客气!顺便说一句,第一行是,它是ES6功能。第二行是一个ES2018功能。如果第二行导致问题,您可以使用
Object.assign
来代替:
return Object.assign({},login,{staff:[rest]})