首页 > 解决方案 > 如何将{}的键修改为对象Angular 8的值

问题描述

我希望重新排列键成为对象元素的一部分。

{
123: [ {geoLong: 323, geoLat:4234}, {geoLong: 325, geoLat: 3422} ],
349: [ {geoLong: 768, geoLat:456}, 
       {geoLong: 7234, geoLat: 590}, 
       {geoLong: 7234, geoLat: 590} ],
958: [ {geoLong: 643, geoLat:290},  
       {geoLong: 567, geoLat: 378}],
...
}

在我使对象变平之前成为下面的结果。

{
123: [ {geoLong: 323, geoLat:4234, id: 123}, 
       {geoLong: 325, geoLat: 3422, id: 123} ],
349: [ {geoLong: 768, geoLat:456, id: 349}, 
       {geoLong: 7234, geoLat: 590, id: 349}, 
       {geoLong: 7234, geoLat: 590, id: 349} ],
958: [ {geoLong: 643, geoLat:290, id: 958},  
       {geoLong: 567, geoLat: 378, id: 958}],
...
}

标签: angularangular8

解决方案


您可以使用Object.entries方法遍历对象。

obj = {
123: [ {geoLong: 323, geoLat:4234}, {geoLong: 325, geoLat: 3422} ],
349: [ {geoLong: 768, geoLat:456}, 
       {geoLong: 7234, geoLat: 590}, 
       {geoLong: 7234, geoLat: 590} ],
958: [ {geoLong: 643, geoLat:290},  
       {geoLong: 567, geoLat: 378}],
}
Object.entries(obj).forEach(([key, values]) => {
    values.forEach(item => item.id = (+key));
})

结果:

{
  "123": [
    {
      "geoLong": 323,
      "geoLat": 4234,
      "id": 123
    },
    {
      "geoLong": 325,
      "geoLat": 3422,
      "id": 123
    }
  ],
  "349": [
    {
      "geoLong": 768,
      "geoLat": 456,
      "id": 349
    },
    {
      "geoLong": 7234,
      "geoLat": 590,
      "id": 349
    },
    {
      "geoLong": 7234,
      "geoLat": 590,
      "id": 349
    }
  ],
  "958": [
    {
      "geoLong": 643,
      "geoLat": 290,
      "id": 958
    },
    {
      "geoLong": 567,
      "geoLat": 378,
      "id": 958
    }
  ]
}

推荐阅读