共 1 条评论关于"上帝的视角带你玩弄js一维数组转二维数组-数据归档"
最新评论
这是群里有人问到的一个问题,有些数据可能后端娃子偷懒,假如给你一个接口,然后直接一个一维数组统统给你返回,而你则需要把某些相同特性数据归类展示在不同的位置那你应该怎么去处理呢?如下图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>一维数组转二维数组 - 数据归档</title> </head> <body> <script> let arr = [ { id: 0, time: "2020-02-19" }, { id: 1, time: "2020-02-30" }, { id: 2, time: "2020-02-19" }, { id: 3, time: "2018-09-10" }, { id: 4, time: "2018-09-10" }, { id: 5, time: "2020-02-19" }, { id: 6, time: "2020-02-19" }, { id: 7, time: "2019-04-23" }, { id: 8, time: "2018-09-10" }, ]; function newArr(arr, key) { let obj = {}; arr.forEach((e) => { if (!obj[e[key]]) { obj[e[key]] = [] } obj[e[key]].push(e) }); return Object.values(obj) } console.log(newArr(arr, "time")) </script> </body> </html> |
注意,Object.values(obj)返回一个数组,其元素是在obj对象上找到的可枚举属性值。属性的顺序与手动循环对象的属性值所给出的顺序相同。通俗来说,它是返回一个数组,每一项对应的值是对象的值,返回的数组的每项排序是根据对象的key来的,实例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | var obj = { foo: 'bar', baz: 42 }; console.log(Object.values(obj)); // ['bar', 42] var obj = { 0: 'a', 1: 'b', 2: 'c' }; console.log(Object.values(obj)); // ['a', 'b', 'c'] var an_obj = { 100: 'a', 2: 'b', 7: 'c' }; console.log(Object.values(an_obj)); // ['b', 'c', 'a'] var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } }); my_obj.foo = 'bar'; console.log(Object.values(my_obj)); // ['bar'] console.log(Object.values('foo')); // ['f', 'o', 'o']复制代码 |
上一篇:秒懂ES6-class类的继承与super前端进阶,世界如此简单
下一篇:【已解决】WordPress升级后5.5.1后无法调用最新评论
最新评论
支付宝扫一扫打赏
微信扫一扫打赏
感谢博主分享