import {buildMap} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.30.0/dist/modules/data/buildmap.js';
let obj = {
"data": [
{
"id": 10,
"name": "Cassandra",
"enrichment": {
variants: [
{
sku: 1, label: "XXS", price: [
{vk: '12.12 €'},
{vk: '12.12 €'}
]
},
{
sku: 2, label: "XS", price: [
{vk: '22.12 €'},
{vk: '22.12 €'}
]
},
{
sku: 3, label: "S", price: [
{vk: '32.12 €'},
{vk: '32.12 €'}
]
},
{
sku: 4, label: "L", price: [
{vk: '42.12 €'},
{vk: '42.12 €'}
]
}
]
}
},
{
"id": 20,
"name": "Yessey!",
"enrichment": {
variants: [
{
sku: 1, label: "XXS", price: [
{vk: '12.12 €'},
{vk: '12.12 €'}
]
},
{
sku: 2, label: "XS", price: [
{vk: '22.12 €'},
{vk: '22.12 €'}
]
},
{
sku: 3, label: "S", price: [
{vk: '32.12 €'},
{vk: '32.12 €'}
]
},
{
sku: 4, label: "L", price: [
{vk: '42.12 €'},
{vk: '42.12 €'}
]
}
]
}
}
]
};
let callback = function (subject) {
let m = new Map;
for (const [i, b] of Object.entries(subject.data)) {
let key1 = i;
for (const [j, c] of Object.entries(b.enrichment.variants)) {
let key2 = j;
for (const [k, d] of Object.entries(c.price)) {
let key3 = k;
d.name = b.name;
d.label = c.label;
d.id = [key1, key2, key3].join('.');
m.set(d.id, d);
}
}
}
return m;
}
let map = buildMap(obj, callback, '${name} ${vk}', '${id}')
// ↦ Map(3) {
// "0.0.0":"Cassandra 12.12 €",
// "0.0.1":"Cassandra 12.12 €",
// "0.1.0":"Cassandra 22.12 €",
// "0.1.1":"Cassandra 22.12 €",
// "0.2.0":"Cassandra 32.12 €",
// "0.2.1":"Cassandra 32.12 €",
// "0.3.0":"Cassandra 42.12 €",
// "0.3.1":"Cassandra 42.12 €",
// "1.0.0":"Yessey! 12.12 €",
// "1.0.1":"Yessey! 12.12 €",
// "1.1.0":"Yessey! 22.12 €",
// "1.1.1":"Yessey! 22.12 €",
// "1.2.0":"Yessey! 32.12 €",
// "1.2.1":"Yessey! 32.12 €",
// "1.3.0":"Yessey! 42.12 €",
// "1.3.1":"Yessey! 42.12 €"
// }