如何交换数组格式? -JavaScript

时间:2018-09-25 10:38:31

标签: javascript arrays json object

这是我的json数据:

{
  "rows": [
    {
      "id": 3,
      "code": "airtel121",
      "position": "manager",
      "salary": "25000",
      "login": {
        "id": 4,
        "username": "sameer",
        "firstName": "Mohamed",
        "lastName": "Sameer",
        "code": "airtel121",
      }
    }
  ]
}

我的预期输出:

{
  "rows": [
    {
      "id": 4,
      "username": "sameer",
      "firstName": "Mohamed",
      "lastName": "Sameer",
      "code": "airtel121",
      "staffs": [
        {
          "id": 3,
          "code": "airtel121",
          "position": "manager",
          "salary": "25000",
        }
      ]
    },
  ]
}

我想以职员的身份将第一个对象交换成一个数组,我不知道制作这种东西的库或方法是什么,

4 个答案:

答案 0 :(得分:2)

喜欢吗?您可以使用ES 2018 对象传播将所需的属性提取到对象文字中。

let a = {
  "rows": [
    {
      "id": 3,
      "code": "airtel121",
      "position": "manager",
      "salary": "25000",
      "login": {
        "id": 4,
        "username": "sameer",
        "firstName": "Mohamed",
        "lastName": "Sameer",
        "code": "airtel121",
      }
    }
  ]
}

let b = { "rows": [{ ...a.rows[0].login, "staffs": [ { ...a.rows[0] } ] } ] }

delete(b.rows[0].staffs[0].login)

console.log(b)

答案 1 :(得分:1)

有多种方法可以解决此问题。使用简单的javascript,您可以这样做。

var data = {
  "rows": [
    {
      "id": 3,
      "code": "airtel121",
      "position": "manager",
      "salary": "25000",
      "login": {
        "id": 4,
        "username": "sameer",
        "firstName": "Mohamed",
        "lastName": "Sameer",
        "code": "airtel121",
      }
    }
  ]
}

var exchangedData = data["rows"].map((row) => {
  row["id"] = row["login"]["id"]
  row["username"] = row["login"]["username"]
  row["firstName"] = row["login"]["firstName"]
  row["lastName"] = row["login"]["lastName"]
  row["code"] = row["login"]["code"]
  row["staffs"] = [{ id: row["id"], code: row["code"], position: row["position"], salary: row["salary"]}]

  delete row["login"]
  delete row["position"]
  delete row["salary"]
  return row;
})

console.log(exchangedData)

答案 2 :(得分:0)

var rows = {
  "rows": [
    {
      "id": 3,
      "code": "airtel121",
      "position": "manager",
      "salary": "25000",
      "login": {
        "id": 4,
        "username": "sameer",
        "firstName": "Mohamed",
        "lastName": "Sameer",
        "code": "airtel121",
      }
    }
  ]
};

var data = {rows:[]}


rows.rows.forEach(function(value, index){

        data.rows.push(
    _.assign(
    {}, 
    {
      "id": value.login.id, 
      "username": value.login.username,
      "firstName": value.login.firstName, 
      "lastName": value.login.lastName,
      "code": value.login.code,
    },{"staffs":[{"id":value.id, "code":value.code, "position": value.position, "salary": value.salary}]})
)});

console.log(data);

答案 3 :(得分:0)

我认为这是一个处理行数组中任意数量对象的简单得多的解决方案。

result = {
  "rows": [
    {
      "id": 3,
      "code": "airtel121",
      "position": "manager",
      "salary": "25000",
      "login": {
        "id": 4,
        "username": "sameer",
        "firstName": "Mohamed",
        "lastName": "Sameer",
        "code": "airtel121",
      }
    }
  ]
}


const data = result.rows.map(d => {
  const {id, code, position, salary} = d
  return Object.assign(d.login, {staffs: {...{id, code, position, salary}}})
})

console.log(data)