Inversare cheie cu valoare in obiect JS
Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
-
Marius
- Mesaje:60
Inversare cheie cu valoare in obiect JS
Nu imi dau seama cum pot schimba urmatorul obiect in JavaScript:
Cod: Selectaţi tot
{"first":["de"], "second":["ab","de"], "third":["de"]}
In acesta:
Cod: Selectaţi tot
{"de":["first", "second", "third"], "ab":["second"]}
Vreau să asociez valorile unice cu lista de chei in care sunt conținute in obiect JavaScript.
Iată ce am încercat:
Cod: Selectaţi tot
const data = {
"first":["de"],
"second":["ab","de"],
"third":["de"]
}
console.log(
Object
.keys(data).reduce(function(obj, key) {
obj[data[key]] = key;
return obj;
}, {})
)
MarPlo
Mesaje:4343
Trebuie să parcurgi array-urile și pentru fiecare element din array verifici dacă există sau nu un array pentru acea valoare în acumulator înainte de a o adăuga:
Cod: Selectaţi tot
const data = {
"first":["de"],
"second":["ab","de"],
"third":["de"]
}
let result = Object.entries(data).reduce((acc, [key, arr]) => { // for each key-array of the original object
arr.forEach(value => { // for each value in the array
acc[value] = acc[value] || []; // create an array in the output object if it doesn't already exist
acc[value].push(key); // push the key to it
});
return acc;
}, {});
console.log(result);
Am folosit
Object.entries cu fiecare intrare sctructurată ca
[key, arr] sa nu se foloseasca un extra [key] ca sa obtin array-ul cand folosesc
Object.keys.