将对象转换为数组并通过对象键对其进行分组

和Mouhsni

通过键将对象转换为数组和组主题!(我不确定标题是否正确,但这是我需要的:

(如果当前键等于下一个键+1和上一个键-1且它们都具有相同的值,则需要单击ck!)

这样的输入

{  
    "2019-07-17":{  
      "7":66,
      "8":66,
      "9":66,
      "11":70,
      "12":70,
      "16":70
   },
   "2019-07-18":{  
      "10":68,
      "11":68,
      "12":75,
      "14":75,
      "15":75,
      "18":70
   }
}

输出应该是这样的

{  
   "2019-07-17":[  
      {  
         "start":7,
         "end":9,
         "id":66
      },
      {  
         "start":11,
         "end":12,
         "id":70
      },
      {  
         "start":16,
         "end":17,
         "id":70
      }
   ],
   "2019-07-18":[  
      {  
         "start":10,
         "end":11,
         "id":68
      },
      {  
         "start":12,
         "end":13,
         "id":75
      },
      {  
         "start":14,
         "end":15,
         "id":75
      },
      {  
         "start":18,
         "end":19,
         "id":70
      }

   ]
}
妮娜·斯科茨(Nina Scholz)

您可以使用内部键和值对条目进行分组,并获取新对象。

var data = { "2019-07-17": { 7: 66, 8: 66, 9: 66, 11: 70, 12: 70, 16: 70 }, "2019-07-18": { 10: 68, 11: 68, 12: 75, 14: 75, 15: 75, 18: 70 } },
    result = Object.fromEntries(Object.entries(data).map(([k, v]) => {
        var values = Object.entries(v).reduce((r, [l, id], i, { [i - 1]: last }) => {
            if (last && +last[0] + 1 === +l && last[1] === id) {
                r[r.length - 1].end = +l;
            } else {
                r.push({ start: +l, end: +l + 1, id });
            }
            return r;
        }, []);
        return [k, values];
    }));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章