javascript - 使用 lodash.js 以所需格式重塑对象数组
问题描述
如何根据列格式化数据?在这里,我需要根据 category1 和 category2 文件将一行转换为 2 行。
输入数据格式:
[
{
'Name' : 'Project A',
'category1' : 20,
'category2 : 10
}
]
输出数据格式:
[
{
'Name' : 'Project A',
'category' : 'category1',
'value' : 20
},
{
'Name' : 'Project A',
'category' : 'category2',
'value' : 10
}
]
解决方案
您的输入非常模糊,但我已经构建了一个适用于多个对象的解决方案,并且如果这些对象的类别比其他对象多,假设键包含category
:
const arr = [{
'Name': 'Project A',
'category1': 20,
'category2': 10
}]
const unpack = arr => arr.flatMap(o =>
Object.entries(o).filter(([key]) => key.includes('category'))
.map(([category, value]) => ({ Name: o.Name, category, value }))
)
console.log(unpack([{ 'Name': 'Project A', 'category1': 20, 'category2': 10 }]))
console.log(unpack([{ 'Name': 'Project A', 'category1': 20, 'category2': 10, 'category3': 5 }]))
console.log(unpack([
{ 'Name': 'Project A', 'category1': 20, 'category2': 10, 'category3': 5 },
{ 'Name': 'Project B', 'category1': 20, 'category2': 10 }
]))
推荐阅读
- python - 如何在python中使用for循环生成多个数据帧?
- plsql - 从 Oracle 12c 向每个用户发送电子邮件以获取他们尚未完成的记录
- git - TFS PR 搞砸了 Git 历史
- elasticsearch - Elasticsearch:嵌套字段的“必须”查询
- java - AndroidManifest.xml 文件中缺少 MapService
- sql - SQL Server 为列表中的每个运行 SELECT
- python - 如何通过列表中基于 int 的字符串对列表进行排序?
- sql - 在 SQL 中使用 group by 从多个表中选择
- php - 在PHP中将两个不同长度的数组相乘?
- pandas - Pandas - 字符串替换,但元素是字符串列表