IndexOf 数组与对象

IndexOf array with objects

我有一个包含对象的数组。我尝试了 indexOf 但它不起作用。

let tags = [];

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

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

我正在尝试类似的方法,标签有一些值,我只是不想添加所有代码。

是否有解决方案可以在几行中仅将数组中的文本与字符串进行比较?

您可以使用 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; }

已接受的答案returns一个包含所有通过过滤功能的标签的数组。但最初的问题似乎是在寻找一种方法来找到特定标签的索引。您可以使用 Array.prototype.findIndex,它接受一个函数来测试:

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