首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >对于数组对象的循环函数,只能找到一个

对于数组对象的循环函数,只能找到一个
EN

Stack Overflow用户
提问于 2016-11-01 02:32:41
回答 2查看 39关注 0票数 1

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    Array[3]
     0: Object
     1: Object
     2: Object

每一个都有一个名字:我用它来引用,它想要找到它,引用我所拥有的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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);

这三个名字是亚当,阿伦·沙米拉,禤浩焯·奥马什,然而,只有找到亚当,我才能找到另外两个,它找不到他们。问题是为什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-01 02:37:56

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

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

array.find

这将返回第一个匹配值或undefined

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)

array.filter

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

Array.some

与前面提到的方法不同,这将返回一个布尔值。如果您没有使用“值”,甚至可以使用此方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)

票数 1
EN

Stack Overflow用户

发布于 2016-11-01 02:36:54

问题是return false,它破坏了循环。

还有更好的方法来过滤像array.filter()array.find()这样的数组。

src:.filter.find

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40358297

复制
相关文章

相似问题

CSV文件的GeoPandas.GeoDataFrame无法写入数据

239

使用GeoDataFrame .merge GeoPandas时空GeoPandas

11

使用Geopandas选择.shp文件的特定区域

129

如何在不写入磁盘的情况下下载解密文件

10

将geopandas.geodataframe转换为geojson

114
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文