Вы можете сделать что-то вроде этого, это сгенерирует все возможные ключи со своими значениями и идентификаторами, которые принадлежат этим значениям.
Если вы будете запускать это генерирование чаще, это хорошая идея для кэширования (запоминать) результаты, особенно когда набор данных становится больше.
console.log(likesme);
{
"yes": [
101,
103,
104
],
"no": [
102
]
}
console.log(likesme.yes);
[
101,
103,
104
]
console.log(sleeps.bed)
[
101
]
var postData = [
{ id: 101, pet: "dog", sleeps: "bed", likesme: "yes" },
{ id: 102, pet: "cat", sleeps: "porch", likesme: "no" },
{ id: 103, pet: "fish", sleeps: "bowl", likesme: "yes" },
{ id: 104, pet: "rock", sleeps: "porch", likesme: "yes" }
];
function generate(data){
return data.reduce((state, entry) => {
Object.entries(entry).forEach(([subject, value]) => {
if (subject in state) {
value in state[subject] ?
state[subject][value].push(entry.id) :
state[subject][value] = [entry.id]
} else {
if (subject !== 'id') state[subject] = {[value]: [entry.id]};
}
});
return state;
}, {});
}
const { likesme, sleeps, pet } = generate(postData)
console.log(likesme);
console.log(likesme.yes);
console.log(sleeps.bed)