3
votes

Pourquoi ne puis-je pas appeler .join () sur le résultat de .keys ()?

J'ai créé ce code JS dans un fichier HTML:

abc,def

Lorsque je rend le fichier, j'obtiens cette erreur:

Uncaught TypeError: keyArrayX.join is not a function

Mais le résultat de keys () est un tableau, donc je ne comprends pas ce qui ne va pas ici. Mon objectif est de renvoyer une chaîne concaténée de toutes les clés du tableau, dans ce cas ce serait:

<script>
x=[];
x["abc"]={
    a:1,
    b:2
}
x["def"]={
    a:234,
    b:5655
}

keyArrayX=x.keys();
console.log(keyArrayX.join());
</script>


1 commentaires

N'ajoutez pas de clés non entières aux tableaux. À la place, faites de x un objet x = {} et utilisez Object.keys (x) .


4 Réponses :


2
votes

"Mais le résultat de keys () est un tableau" ,

La valeur de retour de keys () n'est pas un tableau. Selon MDN

Valeur renvoyée

Un nouvel objet d'itérateur Array.

Si vous voulez des clés, utilisez Object.keys()

let x=[];
x["abc"]={
    a:1,
    b:2
}
x["def"]={
    a:234,
    b:5655
}

keyArrayX=Object.keys(x);
console.log(keyArrayX.join());


0 commentaires

3
votes

Veuillez utiliser l'objet . keys () au lieu de x.keys () ;

De plus, var x = {} est correct pour le dictionnaire

let x = {};

x["abc"] = {
  a: 1,
  b: 2
}
x["def"] = {
  a: 234,
  b: 5655
}

let keyArrayX = Object.keys(x);
console.log(keyArrayX.join());


0 commentaires

1
votes

Vous devez utiliser Object.keys(x).

x=[];
x["abc"]={
    a:1,
    b:2
}
x["def"]={
    a:234,
    b:5655
}

keyArrayX=Object.keys(x);
console.log(keyArrayX.join());


0 commentaires

1
votes

Voulez-vous vraiment définir les clés dans un tableau plutôt que dans un objet?

x={}
x.abc = {};// will be the ideal way
x.def= {};

et ensuite pour obtenir les clés Object.keys (x) devrait être le chemin pour aller avoir une carte de clés

Il faut enregistrer ["abc", "def"] .

Object.keys code> fonctionnera sur x indépendamment de son affectation en tant que tableau ou objet.


0 commentaires