gpt4 book ai didi

javascript - for 数组对象的循环函数只找到一个

转载 作者:太空宇宙 更新时间:2023-11-04 16:24:20 26 4
gpt4 key购买 nike

我有一个名为 Cards 的数组,在控制台日志上看起来像

    Array[3]
0: Object
1: Object
2: Object

每个都有一个名称:我用它来引用它想找到它引用我拥有的对象

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,但找不到它们。问题是为什么???

最佳答案

如前所述,您的 for 循环在第一次迭代后中断,因为 else {return false;}

此外,您还可以查看Array.find()Array.filter

数组.find

这将返回第一个匹配值或未定义

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)

数组.filter

这将返回所有匹配的值或[]

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)

此外,如果目的只是检查某个值是否存在,您甚至可以尝试 array.some

数组.some

与前面提到的方法不同,它返回一个 bool 值。如果你没有利用值(value),你甚至可以使用这个方法。

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)

关于javascript - for 数组对象的循环函数只找到一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40358297/

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