javascript - 如何将数据转换为这样的结构

标签 javascript arrays object data-structures data-conversion

如何将数组 oArr 转换为如下示例所示的结果

示例:

输入:

let oArr = [
   {
      '1': Object,
      'range': [0, 778]
   }, {
      '2': Object,
      'range': [0, 778]
   }, {
      '1': Object,
      'range': [779, 1500]
   }, {
      '3': Objcet,
      'range': [779, 1500]
   }
]

输出:

result = [
    {
      'range': [0, 778],
      '1': Object,
      '2': Object
    },  {
      'range': [779, 1500],
      '1': Object,
      '3': Object
    }
]

最佳答案

对数组的每个元素使用reducer函数将它们按范围值分组,并通过迭代除范围之外的所有属性来设置结果的另一个键。

oArr = [
   {
      '1': 'Object',
      'range': [0, 778]
   }, {
      '2': 'Object',
      'range': [0, 778]
   }, {
      '1': 'Object',
      'range': [779, 1500]
   }, {
      '3': 'Object',
      'range': [779, 1500]
   }
];


var result = Object.values(oArr.reduce((c, obj) => {
  c[obj.range] = c[obj.range] || {'range': obj.range};
  
  for (const [key, value] of Object.entries(obj)) { 
    if(key === 'range') continue;
    c[obj.range][key] = value;
  }
  return c;
}, {}));

console.log(result);

关于javascript - 如何将数据转换为这样的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58621033/

相关文章:

javascript - 如何获取对象长度

javascript - 强制下载base64图片

java - 这个结构在某种程度上是无限递归的吗?

javascript for 循环数组

java - 通用编程与通用对象类型

javascript - 如果JavaScript对象是通过引用传递的,为什么更新属性值不会更新局部变量

javascript - 为什么有些对象在 IE 中没有构造函数?

javascript - Css3 动画故障错误 Chrome 和 Firefox

sql - 如何将两个 float4 数组值相加到一个 Datum 数组中? (postgres 中的 c 函数)

c++ - HashMap 错误: no match for call to ‘(const __gnu_cxx::