javascript - 从http响应形成所需数据对象的正确方法是什么
问题描述
我从 api 调用中接收到某个数组,并且我需要从中形成一个对象数组。这是我从服务器接收的对象数组
[
{x:10,id:1,y:30},
{x:10,id:2,y:50},
{x:11,id:1,y:20},
{x:11,id:2,y:70},
{x:12,id:1,y:80},
{x:12,id:2,y:90}
]
...我需要将其转换为:
[
{x:10,id1:30,id2:50},
{x:11,id2:20,id2:70},
{x:12,id3:80,id2:90}
]
基本上将y
零件存储在各自的对象上
我试图生成所需的对象,但我不得不使用太多循环。有没有更简单或更准确的方法?
解决方案
你可以试试这个
let arr=[ {x:10,id:1,y:30},
{x:10,id:2,y:50},
{x:11,id:1,y:20},
{x:11,id:2,y:70},
{x:12,id:1,y:80},
{x:12,id:2,y:90}
]
let ans=[];
arr.forEach(o=>{
if( !ans.find(i=>o.x===i.x)){
let temp={x:o.x};
temp[`id${o.id}`]=o.y;
arr.filter(item=>(item.x===o.x && item.id!==o.id)).forEach((item,index)=>{
temp[`id${item.id}`]=item.y;
})
ans.push(temp);
}
});
console.log(ans);
推荐阅读
- laravel - 如何获取相关模型的相关laravel模型
- java - 如何使用私有 ssl 证书连接到私有 url
- excel - 如何从 VBA Excel 抓取 Googlemaps?
- javascript - 可以在 AST 树中搜索第一个节点之后的节点的自定义 ESLint 规则
- firebase - Firebase 和 admob 无法链接
- linux - 连接变量的问题,cat 和 cut 命令的结果
- php - 我想使用某些条件进行排名
- python - 从 CSV 文件 Python 中提取列:ValueError: too many values to unpack (expected 4)
- c# - 如何在 Razor 中动态设置变量?
- postgresql - How to find postgresql query which is consuming the most I/O