2012-11-03 14 views
5

Mam tablicę obiektów w javascript. Coś podobnego do tego:Jak ustalić, czy obiekt istnieje w tablicy, czy nie javascript

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

Teraz próbuję dowiedzieć się, czy obiekt o danej wartości nieruchomości Name istnieć w tablicy lub w wybudowanym przez nie funkcji jak inArray, indexOf itd. Środki jeśli mam tylko string C niż to jest możliwe, aby sprawdzić, czy obiekt o nazwie Name C istnieje w tablicy, czy nie przy użyciu wbudowanych funkcji, takich jak indexOf, inArray itp.?

+0

to sprawdzić : - http://stackoverflow.com/questions/4587061/how-to-determine-if-object-is-in-array –

+0

Jak możesz to osiągnąć dzięki jquery inArray? – agDev

Odpowiedz

7

Zamiast wskaźnik wykorzystanie, podobny do komentarza związanego odpowiedź od Rahul Tripathi, chciałbym użyć zmodyfikowanej wersji ciągnąć obiekt po nazwie, zamiast przekazywać cały obiekt.

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

Wykorzystanie

// 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

można spróbować:

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

Lepszym rozwiązaniem byłoby po prostu iteracyjne nad tablicy, ale jeśli trzeba użyć indexOf, to w jaki sposób to zrobić.

Podejście iteracja będzie wyglądać następująco:

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

Dobrze, jeśli obiekt nie jest zbyt duża, można rozważyć iteracji i mecz się dowiedzieć, czy dany obiekt istnieje jak poniżej:

//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")); 
Powiązane problemy