by Guest » 16 Jan 2025, 03:14
Ich habe folgendes Array von Objekten
Code: Select all
let views = [
{
name: "A View",
active: true,
},
{
name: "B View",
active: false,
},
{
name: "C View",
active: false,
}
];
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
Code: Select all
[
{
name: "A View",
active: true,
},
{
name: "B View",
active: false,
},
{
name: "C View",
active: false,
},
{
name: "A View 2",
active: true,
}
]
nach dem ersten neuen „A View“ hinzugefügt
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,
}
];
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
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);
};
Das Problem ist, dass das Suffix nicht korrekt hinzugefügt wird.
Wenn ich die Funktion dreimal aufrufe und dasselbe Objekt übergebe, wie zum Beispiel
Code: Select all
addItem({
name: "A View",
active: true,
});
Ich werde das haben
Hier ist das funktionierende Beispiel –
https://codesandbox.io/p/sandbox/8dhpl3
Ich habe folgendes Array von Objekten
[code]let views = [
{
name: "A View",
active: true,
},
{
name: "B View",
active: false,
},
{
name: "C View",
active: false,
}
];
[/code]
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
[code]{
name: "A View",
active: true,
}
[/code]
Ich möchte die Suffixnummer in der Zählreihenfolge zum Namen hinzufügen, also habe ich
[code][
{
name: "A View",
active: true,
},
{
name: "B View",
active: false,
},
{
name: "C View",
active: false,
},
{
name: "A View 2",
active: true,
}
]
[/code]
nach dem ersten neuen „A View“ hinzugefügt
Und
[code][
{
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,
}
];
[/code]
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
[code]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);
};
[/code]
Das Problem ist, dass das Suffix nicht korrekt hinzugefügt wird.
Wenn ich die Funktion dreimal aufrufe und dasselbe Objekt übergebe, wie zum Beispiel
[code]addItem({
name: "A View",
active: true,
});
[/code]
Ich werde das haben
[img]https://i.sstatic.net/2fsrqbvM .png[/img]
Hier ist das funktionierende Beispiel – https://codesandbox.io/p/sandbox/8dhpl3