如何遍历数组并检查数组值

Posted

技术标签:

【中文标题】如何遍历数组并检查数组值【英文标题】:How to loop through array and check array values 【发布时间】:2013-04-20 22:55:26 【问题描述】:

所以我有一个数组,我想遍历数组并检查其中的值是否与某些字符串匹配,如果匹配,则执行某些操作。

这是我目前所拥有的:

var rgt_count = a_related_genres_leon.length; // <- 3 items

for (var i = 0; i < rgt_count; i++) 

    if inArray("Music", a_related_genres_leon) 
        console.log('Music');
     else if inArray("TV", a_related_genres_leon) 
        console.log('TV');
     else if inArray("Comedy", a_related_genres_leon) 
        console.log('Comedy');
    

我收到了 Uncaught SyntaxError: Unexpected token ( 现在出错了。

我也试过了

if text($.inArray("Music", a_related_genres_leon)) 
        console.log('Music');
     else if text($.inArray("TV", a_related_genres_leon)) 
        console.log('TV');
     else if text($.inArray("Comedy", a_related_genres_leon)) 
        console.log('Comedy');
    

【问题讨论】:

语法错误,因为 if 子句的语法在 javascript 中不同。 【参考方案1】:

要么搜索数组中的特定元素:

if ($.inArray("Music", a_related_genres_leon) > -1) 
    console.log('Music');

if ($.inArray("TV", a_related_genres_leon) > -1) 
    console.log('TV');

if ($.inArray("Comedy", a_related_genres_leon) > -1) 
    console.log('Comedy');

或遍历数组中的所有元素

var rgt_count = a_related_genres_leon.length; // <- 3 items
for (var i = 0; i < rgt_count; i++) 
    console.log(a_related_genres_leon[i]);

但不要将两者混合使用。

【讨论】:

谢谢!太快了,在我检查这个之前还有 8 分钟,我也刚刚发现 'if (jQuery.inArray("Music", a_related_genres_leon)) ' 也有效:) @Leon: inArray 虽然返回元素的索引,所以如果元素在索引0 处,条件将评估为false,这是错误的。您必须明确检查返回值是否不是-1(这意味着该元素不包含在数组中)。【参考方案2】:

请参阅此以了解正确的语法和用法

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/if...else http://api.jquery.com/jQuery.inArray/

if($.inArray("Music", a_related_genres_leon) > -1) 
    console.log('Music');
 else if($.inArray("TV", a_related_genres_leon) > -1) 
    console.log('TV');
 else if($.inArray("Comedy", a_related_genres_leon) > -1) 
    console.log('Comedy');

【讨论】:

【参考方案3】:

试试这个:

if ($.inArray("Music", a_related_genres_leon) > -1) 
    console.log('Music');
 else if ($.inArray("TV", a_related_genres_leon) > -1) 
    console.log('TV');
 else if ($.inArray("Comedy", a_related_genres_leon) > -1) 
    console.log('Comedy');


From the jQuery.inArray() API Docs

$.inArray() 方法类似于 JavaScript 原生的 .indexOf() 方法,因为它在找不到匹配项时返回 -1。如果 数组中的第一个元素匹配值,$.inArray() 返回 0。

因为 JavaScript 将 0 视为松散地等于 false(即 0 == false,但 0 !== false),如果我们正在检查值的存在 在数组中,我们需要检查它是否不等于(或大于) -1.


【讨论】:

以上是关于如何遍历数组并检查数组值的主要内容,如果未能解决你的问题,请参考以下文章

如何检查数组的至少一项是不是包含在对象数组中并遍历所有对象(JS)

如何检查 JsonNode 是 Java 中的单个元素还是数组?

Jquery如何遍历JSON数组并不断添加值

如何遍历数组并根据字符串值删除项目[重复]

循环遍历数组对象以检查值匹配仅适用于第一次迭代,后续迭代失败

js怎么遍历json的数组并输出到html中