2017-01-04 1 views
0

J'ai un tableau avec des paires de valeurs clés.Récupère la valeur du tableau des valeurs clés

var array=[ 
      {Key:"Name",Value:"Sam" }, 
      {Key:"Marks",Value:"50"}, 
      {Key:"Subject",Value:"English"}, 
      ]; 

Je veux pousser Value d'objet dont Key est « sujet » dans une variable. J'ai essayé de voir comment la valeur peut être accédée mais échouée à la toute première étape. Comment cela peut-il être fait?

for (var key in array[0]) 
{ 
    console.log(key[i].Value); //error: Cannot read property 'Value' of undefined 
} 

Comment puis-je pousser Value d'objet dont Key est « sujet » dans une variable?

+0

h ttp: //www.w3schools.com/jsref/jsref_filter.asp –

+0

https://jsfiddle.net/aghosh08/bkh3wasa/ –

+2

@AmitKumarGhosh: Veuillez considérer un site de référence de meilleure qualité, tel que [MDN] (https://developer.mozilla.org/docs/Web/JavaScript/Reference). –

Répondre

2

Votre boucle for-in se trouve sur l'objet array[0], donc key est une clé (nom de propriété) pour cet objet. Donc ceci:

console.log(key[i].Value); 

devrait être

console.log(array[0][key].Value); 

Mais, étant donné ce que vous avez dit que vous voulez faire, je ne vois aucun besoin pour une boucle for-in:

Je veux pousser la valeur de l'objet dont la clé est «Sujet» dans une variable.

Array#find (ce qui est nouveau dans ES2015 - alias ES6 - mais facilement calée/polyfilled) est utile pour cela:

var entry = array.find(function(e) { return e.Key === "Subject"; }); 
if (entry) { 
    theVariable = entry.Value; 
} 

Si vous utilisez ES2015 (ce qui signifie encore transpiling, pour maintenant), vous pouvez utiliser une fonction de flèche pour être plus concis:

let entry = array.find(e => e.Key === "Subject"); 
if (entry) { 
    theVariable = entry.Value; 
} 

Mais si vous voulez en tenir à des choses dans ES5 et plus tôt, il y a Array#some:

array.some(function(e) { 
    if (e.Key === "Subject") { 
     theVariable = e.Value; 
     return true; // stops the "loop" 
    } 
}); 
+1

Merde, vous êtes rapide. –

+0

lol Wayyyy trop vite! Les deux fonctionnent, je vais aller avec la syntaxe ES6 –

0

désolé je mal compris la question avant - édité

Je suggère d'utiliser la méthode jQuery.each() pour cette

var array=[ {Key:"Name",Value:"Sam" }, {Key:"Marks",Value:"50"}, {Key:"Subject",Value:"English"}, ]; 
 

 
$.each(array, function() { 
 
    if(this.Key === "Subject"){ 
 
     this.Value = "something" 
 
    } 
 
}); 
 

 
console.log(array);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

0
var array=[ 
     {Key:"Name",Value:"Sam" }, 
     {Key:"Marks",Value:"50"}, 
     {Key:"Subject",Value:"English"}, 
    ]; 
var i=0; 
var value; 
for(array as value) { 
    value[i]=$(this).text(); 
    i++; 
    alert(value[i]); 
} 

Essayez ceci avec la clé et la valeur