Вы почти там с вашим Object.entries(...).filter
подходом. Однако я не уверен, что вы хотите фильтровать - ключи, значения id
или значения markdown
?
Чтобы избежать путаницы, допустим, у вас есть такой объект вместо этого:
const data = {
keyA: {
id: 'idA',
markdown: 'markdownA'
},
keyB: {
id: 'idB',
markdown: 'markdownB'
}
}
Тогда, просто для справки, функции Object.XX
дают следующие результаты:
console.log(Object.keys(data))
// ['keyA', 'keyB']
console.log(Object.values(data))
// [
// {id: 'idA', markdown: 'markdownA'},
// {id: 'idB', markdown: 'markdownB'}
// ]
console.log(Object.entries(data))
// [
// ['keyA', {id: 'idA', markdown: 'markdownA'}],
// ['keyB', {id: 'idB', markdown: 'markdownB'}]
// ]
Итак:
Для фильтрации по ключу фильтра нет нужно вообще, если это идеальное совпадение, которое вы ищете:
const result = data.keyA
console.log(result) // {id: 'idA', markdown: 'markdownA'}
Если требуется не точное совпадение, хотя, например, все ключи, заканчивающиеся на A
, вы можете использовать Object.entries(...).filter
(а затем map
к значению):
const result = Object.entries(data)
.filter(([key, value]) => key.endsWith('A'))
.map(([key, value]) => value)
console.log(result) // [{id: 'idA', markdown: 'markdownA'}]
Чтобы отфильтровать по одному из свойств (id
или markdown
), вы можете использовать Object.entries(...).filter
, но так как вы не даже если вы заинтересованы в ключе, вы можете использовать Object.values(...).filter
вместо:
const result = Object.values(data).filter(item => item.id === 'keyA')
console.log(result) // [{id: 'idA', markdown: 'markdownA'}]