Как из одного массива с объектами сделать другой массив?
Здравствуйте, у меня парсятся данные с моей базы данных в таком формате:
[
{
id: 1,
name: ["bag", "first hand", "first adding"],
style: 0,
adding: 0,
},
{
id: 2,
name: ["bag", "first hand", "second adding"],
style: 0,
adding: 1,
},
{
id: 3,
name: ["sac", "first hand", "first adding"],
style: 0,
adding: 0,
}
];
Можно ли как-то этот массив переделать в массив с таким форматом?
[
{
name: "bag",
sec_name: [
{
name: "first hand",
sec_name: [
{
name: "first adding",
id: 1,
style: 0,
adding: 0,
},
{
name: "second adding",
id: 2,
style: 0,
adding: 1,
},
],
},
],
},
{
name: "sac",
sec_name: [
{
name: "first hand",
sec_name: [
{
name: "first adding",
id: 3,
style: 0,
adding: 0,
},
],
},
],
},
];
|
maplol123@gmail.com,
<script>
let data = [{
id: 1,
name: ["bag", "first hand", "first adding"],
style: 0,
adding: 0,
},
{
id: 2,
name: ["bag", "first hand", "second adding"],
style: 0,
adding: 1,
},
{
id: 3,
name: ["sac", "first hand", "first adding"],
style: 0,
adding: 0,
}
];
let findName = (key, arr) => arr.find(({
name
}) => name === key);
let createArr = data => data.reduce((arr, ob) => {
let item = arr,
name,
last = ob.name.pop();
for (name of ob.name) {
let obj = findName(name, item)
if (!obj) {
obj = {
name,
sec_name: []
}
item.push(obj)
}
item = obj.sec_name
}
ob.name = last;
item.push(ob)
return arr
}, [])
let arr = createArr(data)
document.write(`<pre>${JSON.stringify(arr, "", 1)}</pre>`)
</script>
|
рони,
Спасибо огромное! |
| Часовой пояс GMT +3, время: 06:14. |