2017-10-20 65 views
-1

我有一個數組與對象。我試過indexOf但它不起作用。IndexOf數組與對象

let tags = []; 
 

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

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

我是想類似的東西,標記有一定的價值,我只是不希望添加所有的代碼。

有沒有一種解決方案來做到這一點,只比較數組中的文本與字符串,幾行?

+2

這不是一個數組。 – Pointy

+2

這是一個對象。 – void

+0

我編輯了,我錯過了數組對不起 – enerv

回答

1

您可以使用array#filter來篩選出有給定文字的標籤。

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

接受的答案返回包含所有這些通過過濾器功能的標籤陣列。但最初的問題似乎在尋求一種方法來查找特定標籤的索引。你可以使用Array.prototype.findIndex,它接受一個函數來測試:

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

真正的問題是,我想要一個函數來測試標記是否已經存在於對象數組中。我的問題措辭不佳。但是,也感謝你的回答! – enerv