如何在 Object.keys() 上返回值(对象)形式过滤器方法而不是键?

Md *_*med 3 javascript arrays object filter

const notes = {
  'jk2334|notes-md-23': {
    id: 'notes-md-23',
    text: 'First Note'
  },
  'jk2334|notes-xd-34': {
    id: 'notes-xd-34',
    text: 'Second Note'
   },
   'fd4345|notes-mf-54': {
    id: 'notes-mf-54',
    text: 'Third Note'
   }
}

const result = Object.keys(notes).filter(note => {
        if(note.startsWith('jk2334')) {
            console.log('from inner -', notes[note]);
            return notes[note];
        }
    })

console.log(result)
Run Code Online (Sandbox Code Playgroud)

如果我运行此代码,它仅返回键,而不返回对象的值。但如果我在条件内进行控制台,它会返回值。

我想返回值数组而不是键。我现在应该怎么做?

Fel*_*ing 5

回调Array#filter预计会返回一个布尔值。true如果你想保留价值,false如果你不想。您不能使用它将输入值转换为不同的输出值。您的代码会意外运行,因为对象是真值。

要将输入转换为输出值,您可以Array#map在过滤后调用将键映射回值:

const notes = {
  'jk2334|notes-md-23': {
    id: 'notes-md-23',
    text: 'First Note'
  },
  'jk2334|notes-xd-34': {
    id: 'notes-xd-34',
    text: 'Second Note'
   },
   'fd4345|notes-mf-54': {
    id: 'notes-mf-54',
    text: 'Third Note'
   }
}

const result = Object.keys(notes)
  .filter(note =>  note.startsWith('jk2334'))
  .map(key => notes[key])

console.log(result)
Run Code Online (Sandbox Code Playgroud)