【问题标题】:What is the proper way of forming required data object from an http response从http响应形成所需数据对象的正确方法是什么
【发布时间】:2019-10-16 10:38:55
【问题描述】:

我从 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 部分存储在它们各自的对象中

我尝试生成所需的对象,但我不得不使用太多循环。有没有更简单或更准确的方法?

【问题讨论】:

标签: javascript api ecmascript-6


【解决方案1】:

你可以试试这个,

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);

【讨论】:

  • 谢谢这是一个了不起的答案,它确实清除了我的大部分概念,但是如果我们不知道 id 怎么办。意思是,在你应用 if(o.id===1) 的地方,如果响应的 id 是一个随机数怎么办。在这种情况下如何解决它
  • 我认为如果 id 是一个随机数更新的代码将工作
  • 嘿,谢谢,我明白了。一个小问题,如果可以有超过 2 个 id 值(即 id =1,id=2,id=3),我们可以创建相应的响应数组对象({x:10,id1: 30,id2:50,id3:"某个值"})
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-04
  • 2015-05-26
  • 2012-07-31
  • 1970-01-01
  • 2016-09-12
  • 2011-04-26
  • 2017-10-21
相关资源
最近更新 更多