Мои данные:
{
"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",
}
]
}
]
}
Я пробовал, но получаю только первый объект, проверьте мою скрипку:
http://jsbin.com/qaqehakuwi/edit?js,output
Можно ли выполнить цикл с помощью цикла for или это можно сделать с помощью lodash?
Проверьте мою ссылку на jsbin для кода.
Я использую код ES6 в своем проекте, поэтому я использовал оператор распространения.
да, но у меня проблема с зацикливанием объектов, поэтому я снова спрашиваю, это другая проблема.
Я думаю, вам следует отменить последний ответ и посмотреть, сможете ли вы получить ответ.
Возможный дубликат Как поменять формат массивов? - javascript



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете использовать map для создания массива rows нового объекта из массива rows старого:
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"}}]};
let newObj = {
rows: oldObj.rows.map(row => {
let { login, ...rest } = row;
return { ...login, staffs: [rest] };
})
};
console.info(newObj);остальное это ES6?
@MohamedSameer Добро пожаловать! Кстати, первая строка - назначение деструктуризации объектов, и это функция ES6. Вторая строка - это распространять синтаксис по объектам, и это функция ES2018. Если вторая строка вызывает проблемы, вы можете использовать Object.assign, например: return Object.assign({}, login, { staffs: [rest] });.
Разве вы уже не задавали этот вопрос здесь: stackoverflow.com/questions/52496180/…