搜索对象数组的字符串

时间:2013-12-03 06:10:09

标签: javascript jquery

我正在尝试搜索对象数组中包含的字符串。

image_array = [
            {image: '/assets/monkey-face.jpg', link_url: '/animal/showit?animal=Monkey'},
            {image: '/assets/tiger-face.jpg', link_url: '/animal/showit?animal=Tiger'} 

]

在url参数showit或图片中找不到字符串'monkey'或'tiger'。

    image_array.IndexOf 
jQuery.inArray

如果我尝试遍历数组/对象并搜索我得到的字符串:

"Object #<Object> has no method 'search'"

我在哪里出错 - 为什么当对象中包含字符串时它会返回-1?

3 个答案:

答案 0 :(得分:5)

试试这个:

for(var i = 0; i < image_array.length; i++){
  if(image_array[i].link_url.indexof("Monkey") != -1){
    // Item found
  }
}

答案 1 :(得分:2)

数组没有搜索方法 - 它用于字符串。试试$.grep()

var result = $.grep(image_array, function(item){
    return item.link_url.indexOf('Monkey') >= 0;
})

//result will be an array with all items having `Monkey` in link_url
console.log(result)

演示:Fiddle

答案 2 :(得分:0)

由于您正在尝试检查对象值中是否包含字符串,假设该字符串未用作任何键值,请尝试以下操作:

 return JSON.stringify(image_array).indexOf("monkey") > 0

希望这会有所帮助:)