javascript - 将带有数组的对象转换为数组
问题描述
我有以下数据结构:
const data = {
"firstName": "A",
"lastName": "B",
"address": [{
"country": "France",
"city": "Paris"
},
{
"country": "Italy",
"city": "Rome"
}
],
};
使用 Ramda 我想将其转换为:
const result = [
{
"firstName": "A",
"lastName": "B",
"address": {
"country": "France",
"city": "Paris"
},
},
{
"firstName": "A",
"lastName": "B",
"address": {
"country": "Italy",
"city": "Rome"
},
},
];
解决方案
您可以使用一个converge
函数来分叉该道具address
,然后将其与列表中每个地址的主对象连接起来:
/**
* R.pick could be replaced with R.omit
* to let you black list properties:
* R.omit(['address']); https://ramdajs.com/docs/#omit
**/
const createByAddress = R.converge(R.map, [
R.pipe(R.pick(['firstName', 'lastName']), R.flip(R.assoc('address'))),
R.prop('address'),
]);
const data = {
"firstName": "A",
"lastName": "B",
"address": [{
"country": "France",
"city": "Paris"
},
{
"country": "Italy",
"city": "Rome"
}
],
};
console.log(createByAddress(data));
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js" integrity="sha256-xB25ljGZ7K2VXnq087unEnoVhvTosWWtqXB4tAtZmHU=" crossorigin="anonymous"></script>
推荐阅读
- python - “等待”如何让 Python 中的代码流动起来?
- php - 如果在 WooCommerce 中未启用“管理库存”,则显示自定义库存消息
- python - 向 numpy 数组中的每个点添加一个点
- java - 在图表视图中将日期显示为 X 轴不起作用(每次都显示相同)
- mysql - "sqlMessage": "您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册以获取正确的语法使用
- json - jq 将数组中的多个对象合并为一个
- amazon-web-services - 为什么我需要 AWS CloudFormation 中的额外元素来插值变量
- r - 如何将自定义变量名称添加到 IRF 图中?
- angular - '"subscriptionKey"' 不可分配给类型 'AuthenticationType'。带有 AngularJ 的 Azure 地图
- vba - 使用vba访问ms access中的字段