Ich habe ein Array mit mehreren Objekten als Einträge (Sammlung) gegeben und ich möchte überprüfen, ob ein anderes Quellobjekt in diesen einzelnen Eintrag Objekte ist. Wenn dem so ist, möchte ich ein Array mit allen Objekten zurückgeben, die diese Bedingung erfüllen. Hier ist der Code mit einem Beispiel:Wie kann JavaScript eingecheckt werden, wenn sich das Objekt in einem Array mit mehreren Objekten befindet?
function whatIsInAName(collection, source) {
var arr = [];
var sourceEntries = Object.entries(source);
for (var i = 0; i < collection.length; i++) {
for (var j = 0; i < sourceEntries.length; i ++) {
if((collection[i].hasOwnProperty(sourceEntries[j][0]))) {
if(collection[i][sourceEntries[j][0]] == sourceEntries[j][1]) {
/*what happens here*/
}
}
arr.push(collection[i]);
}
}
return arr;
}
print(whatIsInAName([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "b": 2 }));
Offensichtlich Ich weiß nicht, was zu setzen, wo es geschrieben ist („Was passiert hier“). Das Problem ist im Grunde, dass die zweite for-Schleife und beide Bedingungen true
sein müssen, damit der Push-Befehl sinnvoll ist.
schätze ich jeden Hinweis oder helfen, danke!
P.S. Ich weiß, dass dies wahrscheinlich nicht der eleganteste Weg ist, es zu lösen, und freue mich auch über andere Lösungen.
Können Sie eine Beispieleingabe und -ausgabe geben? Ich denke, das würde jemandem helfen, herauszufinden, was genau Sie brauchen. –
Ich meine, je nachdem, wie gründlich Sie wirklich sein wollen, könnten Sie einfach testen, ob 'JSON.stringify (item_in_array) == JSON.stringify (search_object)' – Jhecht
Natürlich, @ArnavAggarwal! Also im Grunde, was es in der print-Anweisung ist, ist die Eingabe, Ausgabe sollte sein: '[{" a ": 1," b ": 2}, {" a ": 1," b ": 2," c ": 3}]", weil diese beiden Objekte sowohl 'a' als auch 'b' enthalten. –