I have data that looks like
[{"letter": "a", "word" : "apple"}, {"letter": "b", "word":"ball"}, {"letter": "a", "word":"alpha"}, {"letter": "c", "word":"cat"}]
and I want to transform it into
{"a":["apple", "alpha"], "b": ["ball"], "c":["cat"]}
I have data that looks like
[{"letter": "a", "word" : "apple"}, {"letter": "b", "word":"ball"}, {"letter": "a", "word":"alpha"}, {"letter": "c", "word":"cat"}]
and I want to transform it into
{"a":["apple", "alpha"], "b": ["ball"], "c":["cat"]}
you can use a reduce function for this
const arr = [{"letter": "a", "word" : "apple"}, {"letter": "b", "word":"ball"}, {"letter": "a", "word":"alpha"}, {"letter": "c", "word":"cat"}]
const transformed = arr.reduce((acc, cur) => {
acc[cur.letter] = acc[cur.letter] || [];
acc[cur.letter].push(cur.word);
return acc;
}, {});
console.log(transformed);
Something like this you mean?
const arr = [{"letter": "a", "word" : "apple"}, {"letter": "b", "word":"ball"}, {"letter": "a", "word":"alpha"}, {"letter": "c", "word":"cat"}];
let result = {};
for (let e of arr)
(result[e.letter] = result[e.letter] || []).push(e.word);
console.log(result)
Based on the updated outcome. Below is my approach
var elements = [{"letter": "a", "word" : "apple"}, {"letter": "b", "word":"ball"}, {"letter": "a", "word":"alpha"}, {"letter": "c", "word":"cat"}]
output = {}
elements.forEach(function(e){
key = e['letter']
value = e['word']
if(output[key]){
output[key] = [...output[key], value];
}else{
output[key] = [value];
}
})
console.log(output);