仅使用 Array.prototype.map() 和 Array.prototype.filter() 达到以下效果

维马拉浏览

我有这个对象:

const data = [
  { "key": "Arnav", "value": "J Access" },
  { "key": "Amit", "value": "UP Access" },
  { "key": "Amit", "value": "UP Access" },
  { "key": "Amit", "value": "UP Access01" },
  { "key": "Amit", "value": "UP Access02" },
  { "key": "Arnav", "value": "J Access01" },
  { "key": "John", "value": "EUP Access" },
  { "key": "John", "value": "EUP Access1" },    
  { "key": "Arnav", "value": "J Access02" }
];

我只想使用 map 和 filter 将其转换为这个对象:

const result = [
  { "key": "Arnav", "value":["J Access","J Access02", "J Access01"]},
  { "key": "Amit", "value": ["UP Access","UP Access01","UP Access02"]},
  { "key": "John", "value": ["EUP Access", "EUP Access1"]}
];

即唯一的键值对(数组)

全栈人

理想情况下,您应该使用Array.prototype.reduce对项目进行分组,首先查找项目是否已经存在或不使用,Array.prototype.findIndex然后使用Set.

如果它存在,只需将 加入value现有的分组数组(在检查重复项之前),否则在分组/累积数组中添加一个新条目:

const data = [
  { "key": "Arnav", "value": "J Access" },
  { "key": "Amit", "value": "UP Access" },
  { "key": "Amit", "value": "UP Access" },
  { "key": "Amit", "value": "UP Access01" },
  { "key": "Amit", "value": "UP Access02" },
  { "key": "Arnav", "value": "J Access01" },
  { "key": "John", "value": "EUP Access" },
  { "key": "John", "value": "EUP Access1" },    
  { "key": "Arnav", "value": "J Access02" }
];

const grouped = data.reduce((acc, ele) => {
  const idx = acc.findIndex(obj => obj.key === ele.key);
  if(idx >= 0){
    acc[idx].value = [...new Set(acc[idx].value).add(ele.value)];
  }else{
    acc.push({key: ele.key, value: [ele.value]});
  }
  return acc;
}, []);
console.log(grouped);

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Array.prototype.map()和Array.prototype.forEach()

来自分类Dev

如何正确使用array.prototype.filter()而不是.map()

来自分类Dev

了解Array.prototype.map

来自分类Dev

使用Array.prototype.filter过滤嵌套的子对象

来自分类Dev

使用Array.prototype.filter()解决此JS问题

来自分类Dev

如果不返回Array.prototype.map()是否正确使用

来自分类Dev

如果不返回Array.prototype.map()是否正确使用

来自分类Dev

Array.prototype.map()无法正常工作

来自分类Dev

Array.prototype.map.call 与 Array.map

来自分类Dev

Array.from vs Array.prototype.map

来自分类Dev

Array.prototype.map() 返回空项但 Array.prototype.forEach() 不返回

来自分类Dev

在ngIf中使用array.prototype.some

来自分类Dev

为什么我不能使用 Array.prototype.find 和 String.prototype.startsWith 作为过滤器?

来自分类Dev

什么是Array.prototype.filter()的就地替代品

来自分类Dev

原型方法上的JS Array.prototype.filter

来自分类Dev

JavaScript:为什么我不能使用.push()链接Array.prototype.filter?

来自分类Dev

使用Array.prototype.filter()不会对数组重复数据删除

来自分类Dev

如何使用 Array.prototype.filter 方法在 Express 应用程序中模拟 lodash .find 方法

来自分类Dev

如何使用 JSX 和 Reactstrap(例如 Bootstrap)行和列来布局矩阵?JSX 与我的 Array.prototype.map 不兼容

来自分类Dev

是否可以操纵Array.prototype.map()的index参数?

来自分类Dev

Dart是否等效于Array.prototype.map()?

来自分类Dev

JS Array.prototype.map()碰巧是可变的吗?

来自分类Dev

为什么for循环比Array.prototype.map()更快

来自分类Dev

在后续Array.prototype.map中丢失的类型缩小

来自分类Dev

是否可以操纵Array.prototype.map()的index参数?

来自分类Dev

在Array.prototype.map()内部分解对象属性

来自分类Dev

为什么for循环比Array.prototype.map()更快

来自分类Dev

Array.prototype.map不能用于Promise吗?

来自分类Dev

在使用原型框架的情况下,为什么array.prototype.map.call(..)不起作用?

Related 相关文章

  1. 1

    Array.prototype.map()和Array.prototype.forEach()

  2. 2

    如何正确使用array.prototype.filter()而不是.map()

  3. 3

    了解Array.prototype.map

  4. 4

    使用Array.prototype.filter过滤嵌套的子对象

  5. 5

    使用Array.prototype.filter()解决此JS问题

  6. 6

    如果不返回Array.prototype.map()是否正确使用

  7. 7

    如果不返回Array.prototype.map()是否正确使用

  8. 8

    Array.prototype.map()无法正常工作

  9. 9

    Array.prototype.map.call 与 Array.map

  10. 10

    Array.from vs Array.prototype.map

  11. 11

    Array.prototype.map() 返回空项但 Array.prototype.forEach() 不返回

  12. 12

    在ngIf中使用array.prototype.some

  13. 13

    为什么我不能使用 Array.prototype.find 和 String.prototype.startsWith 作为过滤器?

  14. 14

    什么是Array.prototype.filter()的就地替代品

  15. 15

    原型方法上的JS Array.prototype.filter

  16. 16

    JavaScript:为什么我不能使用.push()链接Array.prototype.filter?

  17. 17

    使用Array.prototype.filter()不会对数组重复数据删除

  18. 18

    如何使用 Array.prototype.filter 方法在 Express 应用程序中模拟 lodash .find 方法

  19. 19

    如何使用 JSX 和 Reactstrap(例如 Bootstrap)行和列来布局矩阵?JSX 与我的 Array.prototype.map 不兼容

  20. 20

    是否可以操纵Array.prototype.map()的index参数?

  21. 21

    Dart是否等效于Array.prototype.map()?

  22. 22

    JS Array.prototype.map()碰巧是可变的吗?

  23. 23

    为什么for循环比Array.prototype.map()更快

  24. 24

    在后续Array.prototype.map中丢失的类型缩小

  25. 25

    是否可以操纵Array.prototype.map()的index参数?

  26. 26

    在Array.prototype.map()内部分解对象属性

  27. 27

    为什么for循环比Array.prototype.map()更快

  28. 28

    Array.prototype.map不能用于Promise吗?

  29. 29

    在使用原型框架的情况下,为什么array.prototype.map.call(..)不起作用?

热门标签

归档