JS/ES6:如何获取对象数组的特定字段并返回具有特定值的单个对象?

use*_*695 2 javascript ecmascript-6

有一个像这样的对象数组:

const schema = [
    { placeholder: 'Title', name: 'title' },
    { placeholder: 'Authors', name: 'author' },
    { placeholder: 'Publisher',  name: 'publisher', optional: true },
    { placeholder: 'Edition', name: 'edition', optional: true }
]
Run Code Online (Sandbox Code Playgroud)

现在我想得到一个所有name字段作为键值的对象1

result = { 'title': 1, 'author': 1, 'publisher': 1, 'edition': 1 }
Run Code Online (Sandbox Code Playgroud)

我尝试使用map,但是

schema.map(o => { return o.name })
Run Code Online (Sandbox Code Playgroud)

给我一个数组:

['title', 'author', 'publisher', 'edition']
Run Code Online (Sandbox Code Playgroud)

Yur*_*nko 5

你需要 reduce

const schema = [
    { placeholder: 'Title', name: 'title' },
    { placeholder: 'Authors', name: 'author' },
    { placeholder: 'Publisher',  name: 'publisher', optional: true },
    { placeholder: 'Edition', name: 'edition', optional: true }
]

console.log(schema.reduce((acc, {name}) => (acc[name] = 1, acc), {}))
Run Code Online (Sandbox Code Playgroud)