我的目标: 我需要在 sequenceIndex 中有一个连续的数字序列,它是我对象中的一个值。
因此,当我删除特定对象时,其他对象的序列索引当然不再连续了。正在根据特定值检查我删除的对象,以查看数组中是否还有其他对象共享相同的值(第二个 if 语句)。如果是这样,那么应该有一个连续的新值集。
输出是 if 语句中的迭代器对于所有操作的对象始终相同。
由此:
const objectsArray = [
{
folder: "folderName",
documents: [
{
id: 0,
sequenceIndex: "0",
documentType: "letter"
},
{
id: 1,
sequenceIndex: "1",
documentType: "letter"
},
{
id: 2,
sequenceIndex: "2",
documentType: "letter"
},
{
id: 3,
sequenceIndex: "3",
documentType: "letter"
}
]
}
];
通过删除 id 1 和 2,我想解决这个问题(请参阅连续序列索引):
const desiredObjectsArray = [
{
folder: "folderName",
documents: [
{
id: 0,
sequenceIndex: "0",
documentType: "letter"
},
{
id: 3,
sequenceIndex: "1",
documentType: "letter"
}
]
}
];
到目前为止我的代码:
case ActionType.RemoveDocumentInSpecificFolder:
return state.map(file => {
// if in the correct folder remove the object with the delivered id
if (file.folder=== folder) {
remove(file.documents, {
id: action.payload.documents[0].id
});
// create newObjArray from objects which share a specific value and replace the sequence index by new value
const newObjArray = file.documents.map((obj: any) => {
// if the object has the specific value create new object with new sequenceIndex
if (obj.documentType === action.payload.documents[0].documentType) {
//poor attempt to create a sequence
let i = 0;
const correctedSequenceDocObject = { ...obj, sequenceIndex: i };
i++;
return correctedSequenceDocObject;
}
我希望有人能指导我朝着正确的方向前进。我也将永远感谢最佳实践的建议:)
手掌心
月关宝盒
波斯汪
相关分类