如何使用 map 函数,以便将索引作为 属性 添加到新构造的对象中?
How do I use map function, so I can add the index as a property to the newly constructed object?
我有一个索引数组:例如selected = [2, 6, 10]
()。我还有一组名为 photos
的照片对象。我只想跟踪选定的照片,所以我这样做:
const selectedPhotos = selectedArray.map((i) => photos[i]);
这给了我结果:
Array [
Object {
"albumId": "someId1",
"creationTime": "sometime",
"duration": 0,
"filename": "name1.jpg",
"id": "someId1",
"uri": "someIUri1",
},
Object {
"albumId": "someId2",
"creationTime": "sometime",
"duration": 0,
"filename": "name2.jpg",
"id": "id2",
"uri": "uri2",
},
Object {
"albumId": "someId3",
"creationTime": "sometime",
"filename": "filename3.jpg",
"uri": "uri3",
},
]
这很好,但是我还想跟踪所选索引。所以我的问题是,我应该如何在 photo
属性旁边添加类似以下信息的内容:index: 2
或 index: 6
等。所以我想 return 像这样:
Array [
Object {
"index": 2,
"albumId": "someId1",
"creationTime": "sometime",
"duration": 0,
"filename": "name1.jpg",
"id": "someId1",
"uri": "someIUri1",
},
Object {
"index": 6
"albumId": "someId2",
"creationTime": "sometime",
"duration": 0,
"filename": "name2.jpg",
"id": "id2",
"uri": "uri2",
},
Object {
"index": 10
"albumId": "someId3",
"creationTime": "sometime",
"filename": "filename3.jpg",
"uri": "uri3",
},
]
只需添加索引:
const selectedPhotos = selectedArray.map((i) => {
let photo = photos[i];
photo.index = i;
return photo;
});
你可以这样做
const selectedPhotos = selectedArray.map((i) => {
let curItem={...photos[i]};
curItem.index=i;
return curItem;
});
您可以创建一个新对象并在其中解构您想要的对象,然后添加索引。这样你就可以在一行中完成并且很容易阅读。
const selectedPhotos = selectedArray.map(i => ({ ...photos[i], index: i }));
更安全的版本 optional chaning:
const selectedPhotos = selectedArray.map(i => ({ ...photos?.[i], index: i }));
我有一个索引数组:例如selected = [2, 6, 10]
()。我还有一组名为 photos
的照片对象。我只想跟踪选定的照片,所以我这样做:
const selectedPhotos = selectedArray.map((i) => photos[i]);
这给了我结果:
Array [
Object {
"albumId": "someId1",
"creationTime": "sometime",
"duration": 0,
"filename": "name1.jpg",
"id": "someId1",
"uri": "someIUri1",
},
Object {
"albumId": "someId2",
"creationTime": "sometime",
"duration": 0,
"filename": "name2.jpg",
"id": "id2",
"uri": "uri2",
},
Object {
"albumId": "someId3",
"creationTime": "sometime",
"filename": "filename3.jpg",
"uri": "uri3",
},
]
这很好,但是我还想跟踪所选索引。所以我的问题是,我应该如何在 photo
属性旁边添加类似以下信息的内容:index: 2
或 index: 6
等。所以我想 return 像这样:
Array [
Object {
"index": 2,
"albumId": "someId1",
"creationTime": "sometime",
"duration": 0,
"filename": "name1.jpg",
"id": "someId1",
"uri": "someIUri1",
},
Object {
"index": 6
"albumId": "someId2",
"creationTime": "sometime",
"duration": 0,
"filename": "name2.jpg",
"id": "id2",
"uri": "uri2",
},
Object {
"index": 10
"albumId": "someId3",
"creationTime": "sometime",
"filename": "filename3.jpg",
"uri": "uri3",
},
]
只需添加索引:
const selectedPhotos = selectedArray.map((i) => {
let photo = photos[i];
photo.index = i;
return photo;
});
你可以这样做
const selectedPhotos = selectedArray.map((i) => {
let curItem={...photos[i]};
curItem.index=i;
return curItem;
});
您可以创建一个新对象并在其中解构您想要的对象,然后添加索引。这样你就可以在一行中完成并且很容易阅读。
const selectedPhotos = selectedArray.map(i => ({ ...photos[i], index: i }));
更安全的版本 optional chaning:
const selectedPhotos = selectedArray.map(i => ({ ...photos?.[i], index: i }));