gpt4 book ai didi

javascript 在数组中查找具有特定属性的对象

转载 作者:行者123 更新时间:2023-11-30 08:07:10 28 4
gpt4 key购买 nike

我需要对现有代码进行扩展,但无法更改。有这个数组:

var availableTags = [
{ label: "Yoga classes", category: "EDUCATIONAL" },
{ label: "Cooking classes", category: "EDUCATIONAL" },
{ label: "Cheese tastings", category: "EDUCATIONAL" },
{ label: "Maker Workshops", category: "PRACTICAL" },
{ label: "Seminars", category: "PRACTICAL" },
//many more of these
];

现在我需要检查输入框中输入的文本是否包含在其中一个标签中,例如如果用户输入“Yoga classes”=> OK,如果“Yoga”=> NOK,“sdsdf”=> NOK,等等。

最好的方法是什么?我不确定我是否可以使用 Array.indexOf,因为我不确定如何将对象传递给函数,我会尝试遍历数组(大约 40 个条目)并比较每个对象。

最佳答案

您需要遍历 availableTags 中的每个项目并检查该项目的 label 是否等于某个输入。尝试这样的事情:

var input = "Yoga classes";
var found = false;
for (var i = 0, j = availableTags.length; i < j; i++) {
var cur = availableTags[i];
if (cur.label === input) {
found = true;
break;
}
}
console.log(found);

演示: http://jsfiddle.net/k4cp4/4/

这可以很容易地放入函数中,例如:

var checkMatch = (function () {
var availableTags = [
{ label: "Yoga classes", category: "EDUCATIONAL" },
{ label: "Cooking classes", category: "EDUCATIONAL" },
{ label: "Cheese tastings", category: "EDUCATIONAL" },
{ label: "Maker Workshops", category: "PRACTICAL" },
{ label: "Seminars", category: "PRACTICAL" }
];

return function (input) {
var found = false;
for (var i = 0, j = availableTags.length; i < j; i++) {
var cur = availableTags[i];
if (cur.label === input) {
found = true;
break;
}
}
return found;
};
})();

演示: http://jsfiddle.net/k4cp4/5/

这会检查是否完全匹配。所以如果你想要不区分大小写的匹配,你可以使用:

if (cur.label.toLowerCase() === input.toLowerCase()) {

演示: http://jsfiddle.net/k4cp4/6/

如果您想查看是否有任何 label包含 输入,您可以使用 indexOf,例如:

if (cur.label.indexOf(input) > -1) {

演示: http://jsfiddle.net/k4cp4/7/

关于javascript 在数组中查找具有特定属性的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16339635/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com