Ich werde Ihre Datenstruktur nur ein wenig vereinfachen. Ich gehe auch davon aus, dass die $$hashKey
verwendet werden kann, um zu bestimmen, ob das zu entfernende Objekt das gleiche wie eins in der Liste ist - wenn das nicht der Fall ist, und wir alle Schlüssel und Parameter innerhalb der Objekte vergleichen müssen Die Antwort bekommt ein bisschen mehr complex.
, hier diese Annahmen Gegeben ist ein Vanille-JavaScript-Version, die in allen gängigen Browsern funktionieren sollte:
var list = [
{$$hashKey: 1, artist: "Alice"},
{$$hashKey: 42, artist: "Bob"},
{$$hashKey: 25, artist: "Charlie"}
];
var itemToRemove = {$$hashKey: 42, artist: "Bob"};
for (var i=0; i<list.length;i++) {
if (list[i].$$hashKey == itemToRemove.$$hashKey) {
list.splice(i,1); // removes the matched element
i = list.length; // break out of the loop. Not strictly necessary
}
}
console.log(list);
Sie vereinfachen könnte, dass etwas, wenn itemToRemove
auf ein Objekt ist eine Referenz, die ist In der Liste;
var obj1 = {$$hashKey: 1, artist: "Alice"},
obj2 = {$$hashKey: 42, artist: "Bob"},
obj3 = {$$hashKey: 25, artist: "Charlie"};
var list = [obj1, obj2, obj3];
var itemToRemove = obj2;
for (var i=0; i<list.length;i++) {
if (list[i] === itemToRemove) {
list.splice(i,1); // removes the matched element
i = list.length; // break out of the loop. Not strictly necessary
}
}
console.log(list);
(Wenn Sie von ES6 sind transpiling gibt es durchaus ein paar neue Convenience-Methoden zur Verfügung, so dass Sie nicht: In diesem Fall können Sie sie nur direkt statt, je nach $$hashKey
vergleichen Sie müssen das Array manuell durchlaufen: array.prototype.findIndex
, array.prototype.filter
, aber diese werden derzeit nicht in genügend Browsern unterstützt, um in der Produktion verwendet zu werden.Alternativ dazu können Sie _.without()
verwenden, wenn Sie eine Bibliothek wie beispielsweise underscore.js hinzufügen möchten entfernen Sie bestimmte Elemente.)
Ihre Liste ein Array ist, so jedes Element löschen Sie Spleiß verwenden können: http://stackoverflow.com/questions/5767325/how-to-remove-a-particular-element- from-a-array-in-javascript – Bagofjuice
Verwenden Sie den $ index von ng-repeat, und verwenden Sie splice(), um den ausgewählten Index zu entfernen ... –
Können Sie genauer darüber sein, was genau {object1} ist? Wie in, ist es buchstäblich ein Verweis auf das gleiche Objekt, das in 'list []' ist? Oder müssen Sie feststellen, ob eines der Objekte in 'list []' nur die gleichen Eigenschaften und Werte wie {object1} hat? http://stackoverflow.com/questions/201183/how-to-determine-equality-for-two-javascript-objects –