2013-06-13 3 views
1

Voici un petit exemple:Comment rechercher une chaîne dans un tableau d'objets (structure)

var distinctValues = []; 
distinctValues.push("Value1"); 
distinctValues.push("Value2"); 

var firstValue = distinctValues[0]; 

var searchResults = []; 

var data = grid.jqGrid('getGridParam', 'data'); 
data.forEach(function (row) { 

    searchResults[searchResults.length] = 
    { 
    "ID"  : row.ID, 
    "CreatedBy": row.CreatedBy, 
    "UpdatedBy": row.UpdatedBy 
    } 
} 

Comment puis-je regarder firstValue (« Valeur1 ») à l'intérieur tableau searchResults et récupérer les informations CreatedBy?

//something like this - this is wrong syntax by the way 
if ($.inArray(firstValue, searchResults) != -1) { 
     alert(searchResults["CreatedBy"]); 
} 

Répondre

1

Je pense que vous pouvez faire ceci:

var searchResults = []; 
data.forEach(function (row) { 

    searchResults.push({ //Push to push the record to the array 
    "ID"  : row.ID, 
    "CreatedBy": row.CreatedBy, 
    "UpdatedBy": row.UpdatedBy 
    }); 
} 

Vous pouvez utiliser jquery $ .inArray ou Array.prototype.indexOf

searchResults est un tableau d'objets afin de l'utiliser indexeur-à-dire searchResults[index]["CreatedBy"] au lieu de searchResults["CreatedBy"] :

var idx = searchResults.indexOf(firstValue); //or var idx = $.inArray(firstValue, searchResults) 
if (idx > -1) { 
     alert(searchResults[idx]["CreatedBy"]); //item Found 
} 

Rien à redire y notre syntaxe pour $.inArray, à condition que jquery soit inclus dans votre code.

Depuis votre match contre une propriété d'objet que vous pouvez essayer ceci:

var result = $.grep(searchResults, function(value) 
    { 
     return value.ID === firstValue; 
    }); 

    console.log(result[0].CreatedBy); //result will be an array of matches. 
+0

on peut utiliser 'arr [arr.length]' pour ajouter des éléments .. mais 'arr.push' est plus rapide – rab

+0

@ Le problème d'OP de Guess de rab est avec l'indexeur ... – PSL

+0

Malheureusement cela renvoie toujours -1. Je l'ai débogué et peut voir que la valeur existe dans le tableau :-( – Max

Questions connexes