Hallo an alle,
vielen Dank für eure Infos und Lösungsansätze. Ich denke, ich habe es jetzt umgesetzt bekommen.
/** Prüfe jedes key:value paar... */
const searchKeyValuePair = [
{Title: 'Batman'},
{Genre: 'Science-Fiction'},
{Title: 'Prometheus'},
{Duration: 1},
{Title: 'Prometheus'},
{Genre: 'Batman'},
{Title: ''},
];
/** ...ob es in dem Array vorkommt */
const inThisObject = {
Title: 'Prometheus',
Genre: 'Science-Fiction',
Tags: 'Weltall',
Duration: 2
};
/** Filter alle das Array searchKeyValuePair, so dass nur die key:value Paare übrig bleiben, die in inThisObject vorkommen. */
let data = searchKeyValuePair.filter(search =>
/** Enthält inThisObject den Key von search (z.B. {Title: 'Batman'})? */
inThisObject.hasOwnProperty(Object.keys(search).toString())
/** Enthält der Wert von search (z.B. {Title: 'Batman'}) den gleichen Wert wie inThisObject['mit dem aktuellen Key']? */
&& Object.values(search).includes(inThisObject[Object.keys(search).toString()])
);
console.log('data: ', data);
Für eine Lösung wäre aber auch noch die Frage interessant: wie sieht es mit case-sensitivity aus?
In dem Fall nicht notwendig, da die Keys auf jeden Fall identisch sind.
Ich würde hier noch die Frage stellen, ob searchKeyValuePairs tatsächlich so aussehen muss, wie es aussieht.
Wäre so auch möglich { key: 'Title', value: 'Batman' }
. Gut zu wissen, dass man Objekte auch so schreiben kann.
Was mir darüber hinaus noch auffällt ist, dass dein Array searchKeyValuePairs doppelte Einträge enthält. Entspricht das deinen Daten oder oder sind die key-value Paare in Wirklichkeit eindeutig?
Entspricht den Daten und soll so sein.
Gruß ebody