如何迭代索引对象数组

How to iterate an array of indexed objects

我有一个索引对象数组,我想遍历它以将其转换为新的平面数组。

这是对象数组:

"attentionSchedules": [
    {
        "room": "1",
        "schedules": [
            {
                "days": [
                    "SA",
                    "WE"
                ],
                "_id": "6271xxxx",
                "initialTimeStr": "12:00 am",
                "finalTimeStr": "12:00 am",
                "initialTime": "2022-05-03T06:00:00.000Z",
                "finalTime": "2022-05-03T06:00:00.000Z"
            }
        ],
        "place": {
            "loc": {
                "type": "Point",
                "coordinates": [
                    -88.03xxx,
                    15.49xxx
                ]
            },
            "_idPlace": "5d5ba845xxx",
            "name": "Labs",
            "address": "xxx"
        },
        "floor": 1
    },
    {
        "room": "23",
        "floor": 1,
        "schedules": [
            {
                "days": [
                    "MO",
                    "TH",
                    "WE",
                    "YOU",
                    "FR",
                    "SA"
                ],
                "_id": "62754264a627af5fc44286b3",
                "initialTimeStr": "08:00 am",
                "finalTimeStr": "09:00 pm",
                "initialTime": "2022-05-06T14:00:00.000Z",
                "finalTime": "2022-05-07T03:00:00.000Z"
            }
        ],
        "place": {
            "loc": {
                "type": "Point",
                "coordinates": [
                    -88.02xxx,
                    15.50xxx
                ]
            },
            "_idPlace": "ba",
            "name": "Labs",
            "address": "xx"
        }
    }
],

我想遍历它,获取它的值并将它转换成一个新的对象,像这样:

{
lng: -88.02xxx
lat: 15.50xxx
_idPlace: "ba"
}
.
.
.
N

我该怎么做?我正在使用 angular,我正在使用 javascript/types 执行该方法 目前我做了这样的事情:

let locCoord: any[] = [];
      this.attentionSchedules?.forEach(elm => {
        for (const [key, value] of Object.entries(elm.place.loc)) {
          let lng = value[0];
          let lat = value[1];

          let dataObjLoc = {
            _id: elm.place._id,
            lat: lat,
            lng: lng
          }

          locCoord.push(dataObjLoc);
        }
      });
      console.log(locCoord);

它 returns 以下内容:

[
    {
        "_idPlace": "5d5ba84531f75411f3b6417e",
        "lat": "or",
        "lng": "P"
    },
    {
        "_idPlace": "5d5ba84531f75411f3b6417e",
        "lat": 15.4997741,
        "lng": -88.03860120000002
    },
    {
        "_idPlace": "6109766f913cf469f6b177ba",
        "lat": "or",
        "lng": "P"
    },
    {
        "_idPlace": "6109766f913cf469f6b177ba",
        lat: 15.5085874,
        "lng": -88.0264096
    }
]

这不是我需要的,因为在使用 Object.entries 时它不仅提取值而且复制键。有人可以帮助我吗?请

我不确定您是否需要遍历 Object.entries(elm.place.loc)(如果我理解问题的话)。我认为您可以直接提取一些值:

const attentionSchedules = [{"room":"1","schedules":[{"days":["SA","WE"],"_id":"6271xxxx","initialTimeStr":"12:00 am","finalTimeStr":"12:00 am","initialTime":"2022-05-03T06:00:00.000Z","finalTime":"2022-05-03T06:00:00.000Z"}],"place":{"loc":{"type":"Point","coordinates":[-88.03,15.49]},"_idPlace":"5d5ba845xxx","name":"Labs","address":"xxx"},"floor":1},{"room":"23","floor":1,"schedules":[{"days":["MO","TH","WE","YOU","FR","SA"],"_id":"62754264a627af5fc44286b3","initialTimeStr":"08:00 am","finalTimeStr":"09:00 pm","initialTime":"2022-05-06T14:00:00.000Z","finalTime":"2022-05-07T03:00:00.000Z"}],"place":{"loc":{"type":"Point","coordinates":[-88.02,15.5]},"_idPlace":"ba","name":"Labs","address":"xx"}}];

let locCoord = [];
attentionSchedules?.forEach(({ place }) => {
  const [lng, lat] = place.loc.coordinates;
  
  locCoord.push({
    _id: place._idPlace,
    lat: lat,
    lng: lng
  });
});
console.log(locCoord);