Ich kämpfe mit Entfernen von Dupes aus einer Reihe von Objekten. Ich habe ein Array, storedItems:gebe ein gefiltertes Array von Objekten zurück
var storedItems = [
{text: "1", checked: false },
{text: "2", checked: false },
{text: "3", checked: false },
{text: "string", checked: false }
]
usw. Die Textwerte sind entweder Zeichenfolgen oder numerische Zeichenfolgen. Ich bin ok mit den einzigartigen Textwerte zu identifizieren, entweder in der Hash oder in uniqueVals ...
filterDupes(storedItems);
function filterDupes(input) {
var hash = {};
var uniqueVals = [];
input.forEach(obj => {
hash[obj.text] = true;
})
var uniqueVals = Object.keys(hash); // Array
return input.filter(function(obj, ix, arr) {
uniqueVals.indexOf(obj.text) !== -1; // NOPE
}) // .filter
} // filterDupes
... es ist wie entweder den Hash-Schlüssel oder uniqueVals an den Eingang Array Objekte zu vergleichen, das heißt, was genau brauche ich (ohne eine for-Schleife oder eine andere forEach?), um das gefilterte Array zurückzugeben, das hat mich dazu gebracht, meinen Kopf gegen eine Wand zu schlagen, um eine Version von return hash zu finden [obj.text] == obj.text; oder return (hash.key === obj.text)
EDIT: Geige hier: https://jsfiddle.net/WTFoxtrot/by3nhy4n/2/
Sie wollen wahrscheinlich Set Objekt https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Set statt laufen forEach Schleife dann Object.keys Methode verwenden. – Yanaro
Was macht der Code, den du gezeigt hast, jetzt? Funktioniert es nicht? Wenn es nicht funktioniert, wie funktioniert es nicht? –
@Yanaro re: Set-Objekt, ja, ich habe gerade davon erfahren, danke. –