我有一个名为Cards的数组,在控制台日志中看起来像
Array[3]
0: Object
1: Object
2: Object
每个都有一个名称:我用它来引用它 想找到它参考我有的obejct
var FoundInArray = [];
function CheckIndexArray(ArraySearch, array) {
var i;
for (i = 0; i < array.length; i++) {
if (array[i].name === ArraySearch) {
FoundInArray = array[i];
return true
break
} else {return false;} }
}
if (CheckIndexArray(document.getElementById("userInput").value, Cards) == true) {
console.log(FoundInArray);
这3个名字是ADAM,Arron Shamira,Adrian Omarsh,但是如果我搜索其他两个,它只找到ADAM它找不到它们。问题是为什么???
答案 0 :(得分:1)
如前所述,由于for
else {return false;}
循环在第一次迭代后中断
此外,您可以查看Array.find()
或Array.filter
。
这将返回第一个匹配值或undefined
var arr = [
{name: 'foo', id:1},
{name: 'foo', id:2},
{name: 'bar', id:3},
{name: 'test', id:4}
]
var searchName = "foo";
var r = arr.find(function(x){ return x.name === searchName});
console.log(r)
&#13;
这将返回所有匹配值或[]
var arr = [
{name: 'foo', id:1},
{name: 'foo', id:2},
{name: 'bar', id:3},
{name: 'test', id:4}
]
var searchName = "foo";
var r = arr.filter(function(x){ return x.name === searchName});
console.log(r)
&#13;
此外,如果目的只是检查是否存在某些值,您甚至可以尝试array.some
与前面提到的方法不同,它返回一个布尔值。如果你没有使用价值,你甚至可以使用这种方法。
var arr = [
{name: 'foo', id:1},
{name: 'foo', id:2},
{name: 'bar', id:3},
{name: 'test', id:4}
]
var searchName = "foo";
var isAvailable = arr.some(function(x){ return x.name === searchName});
console.log(isAvailable)
searchName = "foo123";
isAvailable = arr.some(function(x){ return x.name === searchName});
console.log(isAvailable)
&#13;
答案 1 :(得分:0)