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')
我有一个包含对象的数组。我尝试了 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')