J'ai un problème concaténant deux tableaux associatifs dans JavaScript. Ci-dessous, le code exemple:
var firstArray = new Array(); firstArray.c1 = "sam"; firstArray.c2 = "kam"; var secArray = new Array(); secArray.c3 = "sam"; secArray.c4 = "kam"; var res = firstArray.concat(secArray);
5 Réponses :
Essayez ceci:
var firstArray = new Array("sam", "kam"); var secArray = new Array("sam", "kam"); var res = firstArray.concat(secArray);
Vous n'utilisez pas alors Si vous souhaitez effectivement fusionner des tableaux associatifs, faire: P> array code> fonctionnalité - juste
objet code> fonctionnalité. Dans JavaScript,
objet code> est un tableau associatif - vous utilisez
tableau code> pour les tableaux indexés par des entiers. Si vous avez fait
concat code> fonctionnerait comme prévu. P>
for (var attr in src_array) { dest_array[attr] = src_array[attr]; }
JavaScript n'a pas de tableaux associatifs; Il a des hachages d'objet. Vous créez un tableau et attribuez des valeurs à certaines de ses propriétés, pas dans la matrice elle-même. P>
Votre Concat ne fonctionnera pas car les valeurs sont des propriétés d'objet. Pour faire une concision comme vous l'avez, vous aurez besoin de combiner les deux objets. YUI , JQuery et les autres cadres JavaScript offrent des méthodes utiles à faire exactement cela. < / p>
Strictement parler, ceux-ci ne sont pas des tableaux associatifs du tout: ce sont des matrices de longueur zéro, avec des propriétés nommées supplémentaires. Affectation de ces propriétés fonctionne car les tableaux sont également des objets en JavaScript; Mais cela ne leur fait pas un tableau associatif. Il vaut mieux les regarder comme des haltes. P>
Méthodes de tableau tels que Concat code> ne fonctionnera que avec les éléments indexés numériquement des tableaux, pas avec les propriétés des objets - même si ces objets sont des matrices. P>
Les tableaux dans JavaScript n'ont que des clés numériques. Seuls les objets peuvent avoir des propriétés non numériques. Alors essayez cela à la place:
var firstArray = {}; firstArray.c1 = "sam"; firstArray.c2 = "kam"; var secArray = {}; secArray.c3 = "sam"; secArray.c4 = "kam"; for (var prop in secArray) { if (secArray.hasOwnProperty(prop)) { firstArray[prop] = secArray[prop]; } }
Pourquoi la redondance? Vous en boucle sur les propriétés de la deuxième matrice, puis appelez "HasownProperty" sur le deuxième tableau avec la valeur de la première boucle. Voulez-vous dire tester "HasownProperty" sur le premier tableau?
wow .... puis-je savoir pourquoi le diable que je suis bownvoted ........ Demander une question est erroné ici .. ?? Pls montrer ton visage ton ami .......
Je ne t'ai pas voté, mais je suppose que ce serait quelque chose à faire avec le fait que vous n'expliquez pas vraiment le problème que vous voyez
Frère j'ai donné toutes les informations que j'ai ... (concaténant deux tableaux associatifs) .. N'est-ce pas suffisant ... Les gens posent des questions parce qu'ils ne savent pas ...
@Ramesh: Avez-vous lu la Stackoverflow.com/faq ?
@Ramesh: Vous n'avez pas montré ce que le résultat était. Vous n'avez pas montré quel résultat vous espérez atteindre.
Ramesh, ce genre de questions a besoin de: a) ce que vous avez essayé, b) de ce que vous attendiez et c) ce que l'actally s'est passé. Vous n'avez pas fourni B) et c)
Parfois, je suis voté, car aucune raison apparente du tout, juste parce que la question / réponse (principalement) ne correspond pas à des cerveaux de gens .. Je suppose que c'est le prix d'un grand site démocratique Q / A