首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用一个键值和多个值将数组映射到新对象中具有相同值实例的新对象

用一个键值和多个值将数组映射到新对象中具有相同值实例的新对象
EN

Stack Overflow用户
提问于 2020-10-06 12:45:43
回答 1查看 435关注 0票数 0

这就是我现在拥有的,它返回一个数组,其中包含所有对象,如下面的整个对象:

代码语言:javascript
复制
let unique = getFromDb().then(values => values.map(value => value))

整体对象:

代码语言:javascript
复制
0:
blob: Blob {size: 21481, type: "image/png"}
group: "2020-10-06T07:51:18.816Z"
key: "https://opencache.statkart.no/gatekeeper/gk/gk.open_gmaps?layers=topo4&zoom=19&x=270507&y=155468"
timestamp: "2020-10-6 9:51:18"
url: "https://opencache3.statkart.no/gatekeeper/gk/gk.open_gmaps?layers=topo4&zoom=19&x=270507&y=155468"
urlTemplate: "https://{s}.statkart.no/gatekeeper/gk/gk.open_gmaps?layers=topo4&zoom={z}&x={x}&y={y}"
x: 270507
y: 155468
z: 19

如何将映射到具有相同组值的所有值的新数组?例如: 0: group:'foo‘1: group:'foo’2: group:'bar‘

应该是: mappedArr = group[{'foo','foo'},{'bar'})重要的是,在调用mappedArr时,我可以访问来自mappedArr整体对象的属性

它将像这样使用:

组: foo

object

  • ...

  • url第一个对象
  • url第二个

组:酒吧

  • url第一个对象
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-06 12:54:00

你可以这样减少它:

代码语言:javascript
复制
const data = [{
  group: "foo",
  url: "url 1"
}, {
  group: "foo",
  url: "url 2"
},{
  group: "bar",
  url: "url 3"
},{
  group: "foo",
  url: "url 4"
}];

const groupArr = (arr) => {
  return Object.values( // get array from all the values
    arr.reduce((acc, el) => { // reduce to an object with the group as keys and the single items as value array
      if(acc[el.group] == null)
         acc[el.group] = [el];
      else
         acc[el.group].push(el);

      return acc;
    }, {})
  )
}

console.log(groupArr(data));

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

https://stackoverflow.com/questions/64226095

复制
相关文章

相似问题

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