Maison > Questions et réponses > le corps du texte
let Obj={};
//给出一个数组
var arr = [
{a: 'aa'},
{b: 'bb'},
{c: 'cc'}
]
//生成如下格式
Obj={
a:'aa',
b:'bb',
c:'cc'
}
Personnellement, je pense que vous pouvez utiliser Object.assign() pour fusionner. Existe-t-il une autre bonne méthode ?
高洛峰2017-06-26 10:53:28
arr.reduce((prev, next) => {
Object.keys(next).forEach((item) => {
prev[item] = next[item]
})
return prev
}, {})
代言2017-06-26 10:53:28
Les solutions de
@冴宇 et @cool_zjy sont similaires, mais elles génèrent toutes deux un nouvel objet. Selon le sens de la question d'origine, reduce
的初始值传入 Obj
代替 {}
va bien. Le premier ne nécessite pas de fonctionnalités ES6, le second oui.
@hsfzxjy semble simple, mais elle générera beaucoup d'objets intermédiaires, donc l'efficacité ne devrait pas être très bonne.
Object.assign
La solution devrait être la plus simple. Bien sûr, peut-être qu'une API plus simple peut être trouvée dans la bibliothèque Lodash pour l'implémenter.
给我你的怀抱2017-06-26 10:53:28
Laxatif. L'utilisation de l'ES6 Spread Operator peut être plus concise, mais l'essence est la même
let arr = [
{a: 'aa'},
{b: 'bb'},
{c: 'cc'}
]
let obj = arr.reduce((x, y) => ({...x, ...y}), {})
console.log(obj)
PHP中文网2017-06-26 10:53:28
Question et réponse d'abord, utilisez Object.assign() pour fusionner, je ne sais pas s'il existe d'autres bonnes méthodes