Wie füge ich mit Javascript ein Suffix zu duplizierten Arrays von Objekten hinzu?
Posted: 16 Jan 2025, 03:14
Ich habe folgendes Array von Objekten
Wenn weitere Elemente hinzugefügt werden, eines nach dem anderen mit dem vorhandenen Namen, zum Beispiel ein weiteres „A View“ und ein weiteres „A View“, wie zum Beispiel
Ich möchte die Suffixnummer in der Zählreihenfolge zum Namen hinzufügen, also habe ich
nach dem ersten neuen „A View“ hinzugefügt
Und
Nachdem das zweite „A View“-Element hinzugefügt wurde und so weiter...
Entferne ich dann „A View 2“, möchte ich, dass das Suffix „2“ verfügbar ist für die neue „A-Ansicht“ hinzuzufügen, wenn ich sie hinzufüge. Das nächste „A View“-Element wird also „A View 2“ sein, nicht „A View 4“
Dies ist meine aktuelle Lösung
Das Problem ist, dass das Suffix nicht korrekt hinzugefügt wird.
Wenn ich die Funktion dreimal aufrufe und dasselbe Objekt übergebe, wie zum Beispiel
Ich werde das haben

Hier ist das funktionierende Beispiel – https://codesandbox.io/p/sandbox/8dhpl3
Code: Select all
let views = [
{
name: "A View",
active: true,
},
{
name: "B View",
active: false,
},
{
name: "C View",
active: false,
}
];
Code: Select all
{
name: "A View",
active: true,
}
Code: Select all
[
{
name: "A View",
active: true,
},
{
name: "B View",
active: false,
},
{
name: "C View",
active: false,
},
{
name: "A View 2",
active: true,
}
]
Und
Code: Select all
[
{
name: "A View",
active: true,
},
{
name: "B View",
active: false,
},
{
name: "C View",
active: false,
},
{
name: "A View 2",
active: true,
},
{
name: "A View 3",
active: true,
}
];
Entferne ich dann „A View 2“, möchte ich, dass das Suffix „2“ verfügbar ist für die neue „A-Ansicht“ hinzuzufügen, wenn ich sie hinzufüge. Das nächste „A View“-Element wird also „A View 2“ sein, nicht „A View 4“
Dies ist meine aktuelle Lösung
Code: Select all
const addItem = (item) => {
views = [...views, item];
let names = {};
views.forEach((obj) => {
if (names[obj.name]) {
obj.name += " " + ++names[obj.name];
} else {
names[obj.name] = 1;
}
});
console.log("views", views);
};
Wenn ich die Funktion dreimal aufrufe und dasselbe Objekt übergebe, wie zum Beispiel
Code: Select all
addItem({
name: "A View",
active: true,
});

Hier ist das funktionierende Beispiel – https://codesandbox.io/p/sandbox/8dhpl3