首页 > 解决方案 > 努力将对象转换为在其中一个子对象中具有键

问题描述

我正在努力转换这个文件,以便 clientID 是“事物”中对象的键。我想展平数组,然后为外部对象中的每个对象设置键。

{
 "id": "575802",
 "things": [{
         "clientId": "123456",
         "val": "file1"
     },
     {
         "clientId": "1234",
         "val": "file2"
     }
 ]
}

以上我想成为

{  
"id":"575802",
"things":{  
   "123456":{  
      "val":"file1"
   },
   "1234":{  
      "val":"file2"
   }
}
}

我尝试过使用 Object.entries 的各种方法,但我找不到特定的东西来让 ID 成为关键

标签: javascriptarrays

解决方案


您可以reduce()things阵列上使用

const obj = {
 "id": "575802",
 "things": [{
         "clientId": "123456",
         "val": "file1"
     },
     {
         "clientId": "1234",
         "val": "file2"
     }
 ]
}
obj.things = obj.things.reduce((ac,{clientId,...rest}) => (ac[clientId] = rest, ac), {})
console.log(obj)


推荐阅读