0
votes

Comment particularité de la valeur de la clé dans un objet basée sur les valeurs d'un autre tableau et à l'aide de la séquence de matrices à l'esprit

J'ai un objet avec sa paire de valeurs de clé et basé sur la valeur d'un autre tableau qui n'a que la clé correspondant à la clé d'objets. Je voulais former un tableau différent. Garder à l'esprit la séquence de la matrice et de la même manière que je veux faire un autre tableau avec seulement des valeurs de l'objet.

J'ai essayé avec Object.entries et utilisez-la à la touche à travers l'objet, mais que vous ne pouvez pas obtenir les résultats souhaités. P>

var arrayLegends = ["totalregisteredfirst","totalregisteredsecond", "totalregisteredfourth"];

var lengendsObj = {totalregisteredfirst: "1st visit", totalregisteredfourth: "4th visit", totalregisteredsecond: "2nd visit"}

var legendsValue = [];

Object.entries(lengendsObj).forEach(function([objKey, objValue]) {
  arrayLegends.forEach(function(value) {
    if (value === objKey ) {
      legendsValue.push(objValue);
    }
  });
});

console.log('legends value', legendsValue);


0 commentaires

4 Réponses :


0
votes

Votre code est vraiment proche de l'obtention de votre résultat souhaité, il vous suffit d'utiliser votre arraylegends code> comme boucle extérieure et votre objet.entries (lengendouj) code> pour votre boucle interne :

p>

var arrayLegends = ["totalregisteredfirst","totalregisteredsecond", "totalregisteredfourth"];

var lengendsObj = {totalregisteredfirst: "1st visit", totalregisteredfourth: "4th visit", totalregisteredsecond: "2nd visit"}

var legendsValue = [];

arrayLegends.forEach(function (value) {
	Object.entries(lengendsObj).forEach(function([objKey, objValue]) {
		if (value === objKey ) {
		  legendsValue.push(objValue);
		}
	});
});

console.log('legends value', legendsValue);


2 commentaires

Pourquoi itérairez-vous sur les légendesOV lorsque vous pouvez obtenir directement la valeur de l'objet puisque vous avez déjà la clé?


@ArpitagRawal Je voulais montrer à l'opp à quoi il devait obtenir le résultat souhaité. Mais à coup sûr, le temps d'exécution peut être grandement amélioré de l'opération N ^ 2 dans les postes de mine et d'OP. Votre réponse est vraiment bonne à cet égard.



1
votes

Etant donné que arraraylegends code> contient les touches que vous souhaitez récupérer dans Legendouxj code> Dans le bon ordre, il vous suffit d'itération via arraylegends code> et appuyez sur Les valeurs correspondantes dans LegendsValue code>:

p>

var arrayLegends = ["totalregisteredfirst","totalregisteredsecond", "totalregisteredfourth"];

var lengendsObj = {totalregisteredfirst: "1st visit", totalregisteredfourth: "4th visit", totalregisteredsecond: "2nd visit"}

var legendsValue = [];

arrayLegends.forEach(function(value) {
  legendsValue.push(lengendsObj[value]);
});
  
console.log('legends value', legendsValue);


0 commentaires

0
votes

La commande d'objet n'est pas garantie dans JavaScript . Itération sur un objet ne sera pas nécessairement fait dans le même ordre sur des points indépendants. Itérer sur votre tableau à la place; que fait em> est un ordre garanti.

var arrayLegends = ["totalregisteredfirst","totalregisteredsecond", "totalregisteredfourth"];

var legendsObj = {totalregisteredfirst: "1st visit", totalregisteredfourth: "4th visit", totalregisteredsecond: "2nd visit"}

var legendsValue = [];

arrayLegends.forEach(k => {
    legendsValue.push(legendsObj[k]);
});


0 commentaires

1
votes

Vérifiez cela:

let arrayLegends = ["totalregisteredfirst","totalregisteredsecond", "totalregisteredfourth"];

let lengendsObj = {totalregisteredfirst: "1st visit", totalregisteredfourth: "4th visit", totalregisteredsecond: "2nd visit"}

var legendsValue = arrayLegends.map((key) => lengendsObj[key]);


0 commentaires