简体   繁体   English

如何从数组创建键值对?

[英]How to create key value pair from an array?

I have an array object with following data:我有一个包含以下数据的数组 object:

const arr = [
{
  key: 'mykey1597855209',
  integrity: 'sha512-T9JWj=='
},
{
  key: 'mykey159785520915978552101597855212',
  integrity: 'sha512-T9JWj=='
},
{
  key: 'mykey15978552091597855210',
  integrity: 'sha512-lcddfd=='
},
{
  key: 'otherkey15978552091597855210',
  integrity: 'sha512-abcdfd=='
}];

I want to create key value pair from the the arr[] object such that integrity becomes key and the key becomes value我想从arr[] object 创建key value ,这样integrity就变成了键, key就变成了值

Desired Output is something like below:所需的 Output 如下所示:

{
  "sha512-T9JWj==": [
    "mykey1597855209",
    "mykey159785520915978552101597855212"
  ],
  "sha512-lcddfd==": [
    "mykey15978552091597855210"
  ],
  "sha512-abcdfd==": [
    "otherkey15978552091597855210"
  ]
}

I have written following code:我写了以下代码:

 const arr = [{ key: 'mykey1597855209', integrity: 'sha512-T9JWj==' }, { key: 'mykey159785520915978552101597855212', integrity: 'sha512-T9JWj==' }, { key: 'mykey15978552091597855210', integrity: 'sha512-lcddfd==' }, { key: 'otherkey15978552091597855210', integrity: 'sha512-abcdfd==' } ]; const result = Object.assign(...arr.map(a => ({ [a.integrity]: a.key }))); console.log(result)

You can transform it like this:您可以像这样转换它:

let map = {};

arr.forEach({ key, integrity } => map[integrity] = key);

You can use Object.fromEntries :您可以使用Object.fromEntries

 const arr = [{key: 'mykey1597855209',integrity: 'sha512-T9JWj=='},{key: 'mykey159785520915978552101597855212',integrity: 'sha512-T9JWj=='},{key: 'mykey15978552091597855210',integrity: 'sha512-lcddfd=='},{key: 'otherkey15978552091597855210',integrity: 'sha512-abcdfd=='}]; let map = Object.fromEntries(arr.map(({_, integrity }) => [integrity, []])); arr.forEach(({key, integrity}) => map[integrity].push(key)); console.log(map);

Or reduce :reduce

 const arr = [{key: 'mykey1597855209',integrity: 'sha512-T9JWj=='},{key: 'mykey159785520915978552101597855212',integrity: 'sha512-T9JWj=='},{key: 'mykey15978552091597855210',integrity: 'sha512-lcddfd=='},{key: 'otherkey15978552091597855210',integrity: 'sha512-abcdfd=='}]; let map = arr.reduce((acc, { key, integrity }) => { acc[integrity] = acc[integrity] || []; acc[integrity].push(key); return acc; }, {}); console.log(map);

arr.reduce((acc, curr) => {    
    acc[curr.integrity] = (acc[curr.integrity]) ? 
                          [ ...acc[curr.integrity], curr.key ] : 
                          [ curr.key ]    
    return acc;
}, {})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM