我有一个从API获得的对象数组。属性名称是动态的(这意味着我没有列出所有属性的详细列表)。如何获得一个包含所有不同对象的数组?契约规定,如果key相等,则value也相等。我试着环顾四周,但我找不到任何类似的问题。
[ 20:31:28
{
'product-management': 'Product management'
},
{
'product-development': 'Product development'
},
{
'client-work': 'Client work'
},
{
'client-work': 'Client work'
},
{
'product-development': 'Product development'
},
{
'client-work': 'Client work'
},
{
'product-development': 'Product development'
}
]发布于 2019-12-23 06:45:32
将数组展开到Object.assign()中,以将所有对象合并为单个对象。由于所有对象的属性都是唯一的,这将从副本中只留下一个键(和值)。然后使用Object.entries()转换为键、值对,并映射回单个对象:
const data = [{"product-management":"Product management"},{"product-development":"Product development"},{"client-work":"Client work"},{"client-work":"Client work"},{"product-development":"Product development"},{"client-work":"Client work"},{"product-development":"Product development"}]
const result = Object.entries(Object.assign({}, ...data))
.map(([k, v]) => ({ [k]: v }))
console.log(result)
使用@Bergi's suggestion,您还可以在删除重复项的同时将其转换为更健全的应用程序接口:
const data = [{"product-management":"Product management"},{"product-development":"Product development"},{"client-work":"Client work"},{"client-work":"Client work"},{"product-development":"Product development"},{"client-work":"Client work"},{"product-development":"Product development"}]
const result = Object.entries(Object.assign({}, ...data))
.map(([key, value]) => ({ key, value }))
console.log(result)
https://stackoverflow.com/questions/59448561
复制相似问题