2017-10-20 68 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