11476 sujets

JavaScript, DOM et API Web HTML5

Salut à tous, quelqu'un avait déjà remarqué sur sur Firefox, la fonction join() déconne ?
Code tout simple à tester dans la console :
tableau = [];
tableau['lolo'] = 4;
tableauJ = tableau.join();

Moi ca me renvoi du null.
C'est moi qui suis con ou bien ?
Bonjour,

tableau['lolo'] = 4;
ç'est un tableau associatif: {'lolo':4}

et join, c'est pour des tableaux: ['lolo', '4', 'et', 'oui'] par exemple.
tableau[0] = 'lolo';
tableau[1] = '4';
tableau[2] = 'et';
tableau[3] = 'oui';
Modifié par loicbcn (08 Feb 2024 - 14:53)
Meilleure solution
Ah bon ? Tu veux dire que cette fonction est explicitement prévue pour ne pas fonctionner avec des index nommés ? Mais c'est complètement con. Smiley ohwell

Donc pour résoudre ce problème, je suis censé faire une requête ajax et gérer ca avec un implode() php côté serveur ? :s

(merci en tout cas de ta réponse, je pensais bien qu'un truc comme ca s'était forcément vu mais impossible de trouver cette clarification sur les docs js)
Modifié par C@scou (08 Feb 2024 - 18:11)
C@scou a écrit :
Donc pour résoudre ce problème, je suis censé faire une requête ajax et gérer ca avec un implode() php côté serveur ? :s

Évidement que si c'est possible. Dans la lignée de ce que vient de dire Papy je vais illustrer mon propos par un exemple que j'utilise tout le temps, que ce soit côté frontend ou côté backend (avec Node.js) :
// on initialise un objet avec un littéral :
const data = {
  id: 1,
  givenName: 'Henri',
  additionalName: 'Sonier',
  familyName: 'de Lubac',
  birthDate: 1896-02-19T23:50:39.000Z,
  deathDate: 1991-09-03T22:00:00.000Z,
  phone: '0555555555'
}

data.phone = '0777777777' // on vient de changer le numéro de téléphone avec la notation par point (c'est plus joli que `data['phone']`)

// Et enfin l'utilisation de join() ; je passe ici trois valeurs en tableau et, si elles existent (le booleen) alors je les concatène avec join()*** en laissant un espace entre les valeur (' ') :
data.title = [data.givenName, data.additionalName, data.familyName].filter(Boolean).join(' ')

console.log(data)
/*
// ce qui nous retournera l'objet avec la propriété "phone" modifiée et l'ajout de "title" et sa valeur concaténée plus haut avec join()
{
  id: 1,
  givenName: 'Henri',
  additionalName: 'Sonier',
  familyName: 'de Lubac',
  birthDate: 1896-02-19T23:50:39.000Z,
  deathDate: 1991-09-03T22:00:00.000Z,
  phone: '0777777777',
  title: 'Henri Sonier de Lubac'
}
*/

*** À noter que pour les chaines de caractères il existe aussi concat(), et là il n'y a alors pas besoin de passer les valeurs dans un tableau comme pour join().
Modifié par Olivier C (08 Feb 2024 - 23:25)
Ah oui concat c'est vrai je m'en était servi dans un projet il y a un an ou deux, je l'avais complètement oublié cette fonction.

De toute manière je ragerais jusqu'à la fin sur le JS, c'est typiquement LE langage que je n'ai jamais supporté, à tel point que pour "m'y mettre", j'ai du attendre (à l'époque) de découvrir Jquery. Et même maintenant, sorti de Jquery, le JS me gonfle magistralement. Smiley lol

Je n'ai qu'un rêve, c'est pouvoir faire du PHP côté client. Smiley langue
C@scou a écrit :
Je n'ai qu'un rêve, c'est pouvoir faire du PHP côté client. Smiley langue

Ouch ! on n'a pas tous le même rêve.

Et moi je fais du JavaScript côté backend...
La vie est injuste.
Modifié par Olivier C (19 Feb 2024 - 05:07)