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