2015-01-10 59 views
0

存在的項目有一個JavaScript數組這樣我如何檢查是否在JavaScript陣列

var open_chats = []; 
    open_chats.push({ 
    "chatid": 'dfsfsdfsdf', 
    "data": 'adfsdf' 
    }); 

我需要檢查,如果存在的項目在這個數組中,我使用這樣的事情。

if ($.inArray('dfsfsdfsdf', open_chats) !== -1){ 
    alert('contains'); 
    } 

除了這似乎沒有工作。我無法找到適合這個陣列的東西。誰能幫忙?

+2

的元件'open_chats'是對象,而不是字符串。 – Barmar

回答

0

您的代碼檢查是否'dfsfsdfsdf'是陣列中,而不是是否有一個屬性的對象chatid具有'dfsfsdfsdf'作爲其值。

使用本地JavaScript陣列方法:

var hasMatch = open_chats.some(function(chat) { 
    return chat.chatid === 'dfsfsdfsdf'; 
}); 
if (hasMatch) { 
    alert('contains'); 
} 
0

當你有對象,而不是字符串數組中我會建議使用jQuery的grep方法:

var result = $.grep(open_chats, function(data){ return data.chatid == 'dfsfsdfsdf'; }); 

if(result.length) { 
    alert('contains'); 
} 
+0

這可以工作,但是'$ .grep'將會建立一個包含所有匹配的新數組,而'Array.prototype.some'將循環直到找到一個匹配並停止。如果你不需要結果數組,那不是最好的選擇。 – Jacob

+0

是的,但'Array.prototype.some'不能在舊的IE瀏覽器中工作(例如<9) – antyrat

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some列出'Array.prototype.some'的一個polyfill –