首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript中对象数组的比较与获取

Javascript中对象数组的比较与获取
EN

Stack Overflow用户
提问于 2020-12-27 08:46:51
回答 1查看 80关注 0票数 1

这个变量数据能与输出匹配吗?我试着组合它,但它不起作用,它只产生了1行,这与结果不匹配。我尝试过使用排序,但我仍然不知道如何显示数组的两个侧面-就像那样。

代码语言:javascript
复制
//Output Associative-Array
[
["row3", "row5"],

["row1", "row2"],

["row4", ""],

["", "row6"],

["row7", "row8"]
]

这是我的代码

代码语言:javascript
复制
   const arr = [
    {id: 2, value: 'row1', position: 'S'},
    {id: 2, value: 'row2', position: 'A'},
    {id: 1, value: 'row3', position: 'S'},
    {id: 3, value: 'row4', position: 'S'},
    {id: 1, value: 'row5', position: 'A'},
    {id: 4, value: 'row6', position: 'A'},
    {id: 5, value: 'row7', position: 'S'},
    {id: 5, value: 'row8', position: 'A'}
  ]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-29 14:43:07

您可以使用数组reduce方法执行以下操作:

代码语言:javascript
复制
arr = [
    {id: 2, value: 'row1', position: 'S'},
    {id: 2, value: 'row2', position: 'A'},
    {id: 1, value: 'row3', position: 'S'},
    {id: 3, value: 'row4', position: 'S'},
    {id: 1, value: 'row5', position: 'A'},
    {id: 4, value: 'row6', position: 'A'},
    {id: 5, value: 'row7', position: 'S'},
    {id: 5, value: 'row8', position: 'A'}
  ]

arr.sort((a,b) => a.id - b.id);

ret = arr.reduce((prev, curr) => {
  if(!prev[curr.id - 1]) {
    prev[curr.id - 1] = ['', ''];
    
  }
  
  if(curr.position === 'A') {
      prev[curr.id - 1][1] = curr.value;
    } else {
      prev[curr.id - 1][0] = curr.value;
    }
 
  return prev;
}, {});

console.log(Object.values(ret));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65462060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档