2012-11-03 13 views
5

私はjavascriptでオブジェクトの配列を持っています。これに似た何かは:私が唯一持っている場合オブジェクトが配列内に存在するかどうかを確認する方法javacript

var objectArray = [ 
     { "Name" : "A", "Id" : "1" }, 
     { "Name" : "B", "Id" : "2" }, 
     { "Name" : "C", "Id" : "3" }, 
     { "Name" : "D", "Id" : "4" } 
    ]; 

今私は、与えられたプロパティName値を持つオブジェクトがinArrayのように構築された機能の貫通配列内に存在するかどうかを調べることを試みている、などindexOf手段文字列C indexOf、inArrayなどのinbuilt関数を使用して、名前Cのオブジェクトが配列内に存在するかどうかをチェックするよりも、これが可能ですか?あなたが試みることができる

+0

チェック: - http://stackoverflow.com/questions/4587061/how-to-determine-if-object-is-in-array –

+0

jquery inArrayでこれをどのように達成できますか? – agDev

答えて

7

、私が引っ張って修正版を使用しますオブジェクト全体を渡すのではなく名前でオブジェクトを作成します。

function pluckByName(inArr, name, exists) 
{ 
    for (i = 0; i < inArr.length; i++) 
    { 
     if (inArr[i].name == name) 
     { 
      return (exists === true) ? true : inArr[i]; 
     } 
    } 
} 

使用

// Find whether object exists in the array 
var a = pluckByName(objectArray, 'A', true); 

// Pluck the object from the array 
var b = pluckByName(objectArray, 'B'); 
1

objectArray.indexOf({ "Name" : "C", "Id" : "3" }); 

をより良い方法は、単純に配列を反復することですが、あなたはのindexOfを使用する必要がある場合は、これはあなたがそれを行うだろう方法です。

反復アプローチは、次のようになります。

むしろラーフルTripathiからのコメントリンクの回答に類似の使用率、より
var inArray = false; 
for(var i=0;i<objectArray.length;i++){ 
    if(objectArray[i]["Name"] == "C"){ 
     inArray = true; 
    } 
} 
6
var found = $.map(objectArray, function(val) { 
    if(val.Name == 'C') alert('found'); 
});​ 

Demo

0

まあ、オブジェクトが大きすぎるではない場合、あなたは見つけるために、反復して試合を考慮することができる特定のオブジェクトであれば、以下のように存在します。このうち

//The Object 
var objectArray = [ 
    { "Name" : "A", "Id" : "1" }, 
    { "Name" : "B", "Id" : "2" }, 
    { "Name" : "C", "Id" : "3" }, 
    { "Name" : "D", "Id" : "4" } 
]; 


//Function to check if object exist with the given properties 
function checkIfObjectExist(name,id) 
{ 
for(var i=0;i<objectArray.length;i++) 
{ 
    if(objectArray[i].Name===name && objectArray[i].Id===id) 
    {  
     return true; 
    } 
}  
} 

// Test if function is working 
console.log(checkIfObjectExist("B","2")); 
関連する問題