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);
4 Réponses :
Votre code est vraiment proche de l'obtention de votre résultat souhaité, il vous suffit d'utiliser votre p> arraylegends code> comme boucle extérieure et votre
objet.entries (lengendouj) code> pour votre boucle interne :
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);
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.
Etant donné que p> 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>:
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);
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]);
});
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]);