Как поменять формат массивов?- JavaScript - PullRequest
0 голосов
/ 25 сентября 2018

Это мои данные 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 голосов
/ 26 сентября 2018

Я думаю, что это гораздо более простое решение, которое обрабатывает любое количество объектов в массиве строк.

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)
0 голосов
/ 25 сентября 2018

Как это?Вы можете использовать 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)
0 голосов
/ 25 сентября 2018
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);
0 голосов
/ 25 сентября 2018

Есть несколько способов решить эту проблему.С помощью простого 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...