Я пытаюсь понять, как я буду анализировать следующую информацию:
{
'unknown-value': {
name: 'AB',
id: 'BLUE'
},
'unknown-value': {
name: 'AC',
id: 'PURPLE'
}
}
Желая проанализировать их, создайте массив значений, подобных этим:
names = ['AB', 'AC']
ids = ['BLUE', 'PURPLE']
Не сталкивался с чем-то подобным, где это не массив объектов, поэтому я немного в тупике, что делать.
Object.values()
.
const obj = [{
'unknown-value': {
name: 'AB',
id: 'BLUE'
},
'unknown-value2': {
name: 'AC',
id: 'PURPLE'
}
}]
let names = [];
let ids = [];
obj.forEach((x) => {
Object.values(x).forEach((y)=>{
names.push(y.name);
ids.push(y.id);
})
})
console.info(names);
console.info(ids);
Вам также может понадобиться этот неизвестный ключ, так что Object.entries — ваш друг:
const normalized = Object.entries(obj).map(([key, value]) => ({key, ...value}));
Теперь normalized содержит массив объектов, каждый из которых имеет новое свойство «ключ», которое содержит ключ.
Как бы просто это ни было, попробуйте этот подход, и вы получите желаемый результат.
object = {
'unknown-value': {
name: 'AB',
id: 'BLUE'
},
'unknown-value': {
name: 'AC',
id: 'PURPLE'
}
};
names = [];
ids = [];
for (key in object) {
names.push(object[key].name);
ids.push(object[key].id);
}
for (value of names) {
console.info(value);
}
for (value of ids) {
console.info(value);
}
const { names, ids, } = Object.values({
'foo': {
name: 'AB',
id: 'BLUE',
},
'bar': {
name: 'AC',
id: 'PURPLE',
}
}).reduce((map, item) => {
map.names.push(item.name)
map.ids.push(item.id)
return map;
}, { names: [], ids: [] });
console.info('names :', names);
console.info('ids :', ids);
.as-console-wrapper { min-height: 100%!important; top: 0; }
вы пробовали Object.values ?