2017-10-20 2 views
-1

Ich habe ein Array mit Objekten. Ich habe versucht indexOf, aber es funktioniert nicht.IndexOf Array mit Objekten

let tags = []; 
 

 
let tag = { 
 
    text: "hello", 
 
    element: document.createElement('span') 
 
}; 
 
tags.push(tag); 
 

 
console.log(tags.indexOf("hello"));

Ich war so etwas versucht haben Tags einige Werte i will nur nicht den gesamten Code hinzuzufügen.

Gibt es eine Lösung, um nur den Text aus dem Array mit einer Zeichenfolge in ein paar Zeilen zu vergleichen?

+2

Das ist kein Array. – Pointy

+2

Das ist ein Objekt. – void

+0

Ich bearbeitet, ich verpasste das Array leider – enerv

Antwort

1

Sie können verwenden, um Tags mit dem angegebenen Text herauszufiltern.

let tags = [{ 
 
     text: 'hello', 
 
     element: document.createElement('span') 
 
}, { 
 
     text: 'there', 
 
     element: document.createElement('div') 
 
}, { 
 
     text: 'world', 
 
     element: document.createElement('span') 
 
}, { 
 
     text: 'hello', 
 
     element: document.createElement('span') 
 
}]; 
 

 
let result = tags.filter(tag => tag.text === 'hello'); 
 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

0

Die akzeptierte Antwort gibt ein Array, die die Tags, die all die Filterfunktion übergeben enthält. Aber die ursprüngliche Frage scheint nach einer Möglichkeit zu suchen, den Index eines bestimmten Tags zu finden. Sie können Array.prototype.findIndex verwenden, das eine Funktion zum Testen akzeptiert mit:

tags.findIndex(tag => tag.text === 'hello') 
+0

Die eigentliche Frage war, ich wollte eine Funktion testen, ob das Tag bereits im Array von Objekten existiert. Meine Frage war schlecht formuliert. Aber ja danke auch für deine Antwort! – enerv