javascript在数组中查找具有特定属性的对象
我需要对现有代码进行扩展,无法更改。 有一个数组:javascript在数组中查找具有特定属性的对象,javascript,arrays,object,Javascript,Arrays,Object,我需要对现有代码进行扩展,无法更改。 有一个数组: var availableTags = [ { label: "Yoga classes", category: "EDUCATIONAL" }, { label: "Cooking classes", category: "EDUCATIONAL" }, { label: "Cheese tastings", category: "EDUCATIONAL" }, { label:
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
];
现在我需要检查输入框中输入的文本是否包含在其中一个标签中,例如,如果用户输入“瑜伽课程”=>OK,如果“瑜伽”=>NOK,“SDF”=>NOK,等等
最好的方法是什么?我不确定我是否可以使用Array.indexo如果我不确定如何将对象传递给函数,我会尝试在数组中循环(大约40个条目)并比较每个对象。您需要循环检查
availableTags
中的每个项目,并检查该项目的标签是否等于某些输入。试着这样做:
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);
演示:
如果您想查看任何标签s是否包含输入,可以使用indexOf
如下:
if (cur.label.indexOf(input) > -1) {
演示:您需要循环查看可用标签中的每个项目,并检查该项目的标签是否等于某些输入。试着这样做:
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);
演示:
如果您想查看任何标签s是否包含输入,可以使用indexOf
如下:
if (cur.label.indexOf(input) > -1) {
演示:您可以使用以下方法:
测试数组中的某些元素是否通过所提供函数实现的测试
然后,您的代码将类似于:
var isFound = availableTags.some(function(el) {
return el.label === 'Yoga classes';
});
注意:方法需要加垫片。您可以使用方法:
测试数组中的某些元素是否通过所提供函数实现的测试
然后,您的代码将类似于:
var isFound = availableTags.some(function(el) {
return el.label === 'Yoga classes';
});
注意:方法需要加垫片。你必须在数组中循环并检查每个对象,然后在找到它时停止。你必须在数组中循环并检查每个对象,然后在找到它时停止。你必须在数组中的每个对象上运行该测试,直到它找到正案例-性能将很差,特别是在较大的阵列上。但这是一个非常优雅的:)同意性能问题。40个条目不是太多,所以我想我可以接受。一些
只在回调返回true之前不会检查所有对象。你必须在数组中的每个obj上运行该测试,直到它发现正的大小写-性能将很差,特别是在较大的阵列上。但这是一个非常优雅的:)同意性能问题。40个条目不是太多,所以我想我可以接受。一些
不会检查所有对象,直到回调返回true。我放弃。循环是最快的。indexOf还执行循环,但它增加了额外的类型检查和其他一些开销。最新的Chrome似乎针对大型阵列中的indexOf进行了优化,但这种优化并不是在所有浏览器中都是一致的。循环是最快的。indexOf还执行循环,但它增加了额外的类型检查和其他一些开销。最新的Chrome似乎针对大型阵列中的indexOf进行了优化,但这种优化在所有浏览器中并不一致。