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

标签 javascript arrays for-loop

我有一个名为 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/

相关文章:

c++ - 编译器在这里执行哪种循环优化?

javascript - Facebook 选择好友并将 UID 发布到自定义 URL

javascript - 当我选择多个文件时,如何在jQuery中获取每个文件的数据?

c++ - 将 int[n][n] 转换为 vector <vector<int>>

javascript - 从内部函数中的父作用域访问数组元素

c - 如何在char中使用For循环?

javascript - 全屏 Android Web 应用程序

javascript - Google Charts - 组合图表示例问题

arrays - 如何将结构数组切片成行,而不是列?

bash - 在 bash shell 脚本中从 glob 目录内的命令行执行命令