Les tableaux sont normalement accessibles via des index numériques, donc dans votre exemple arr[0] == {name:"k1", value:"abc"}
. Si vous savez que la name
de chaque objet sera unique, vous pouvez les stocker dans un objet au lieu d'un tableau, comme suit :
var obj = {};
obj["k1"] = "abc";
obj["k2"] = "hi";
obj["k3"] = "oa";
alert(obj["k2"]); // displays "hi"
Si vous voulez réellement un tableau d'objets comme dans votre article, vous pouvez parcourir le tableau et revenir lorsque vous trouvez un élément avec un objet ayant la propriété que vous souhaitez :
function findElement(arr, propName, propValue) {
for (var i=0; i < arr.length; i++)
if (arr[i][propName] == propValue)
return arr[i];
// will return undefined if not found; you could return a default instead
}
// Using the array from the question
var x = findElement(arr, "name", "k2"); // x is {"name":"k2", "value":"hi"}
alert(x["value"]); // displays "hi"
var y = findElement(arr, "name", "k9"); // y is undefined
alert(y["value"]); // error because y is undefined
alert(findElement(arr, "name", "k2")["value"]); // displays "hi";
alert(findElement(arr, "name", "zzz")["value"]); // gives an error because the function returned undefined which won't have a "value" property