1
votes

Essayer d'analyser plusieurs tableaux de chaînes en nombres

Existe-t-il un moyen de parcourir chaque tableau Oracle endpnt et d'analyser les chaînes en nombres tout en gardant les tableaux Oracle endpnt dans l'ordre.

Code

[
  Oracle { name: 'oracle1', endpnt: [ '1', '3' ] },
  Oracle { name: 'oracle2', endpnt: [ '1', '2' ] },
  Oracle { name: 'oracle3', endpnt: [ '1', '3' ] },
  Oracle { name: 'oracle4', endpnt: [] }
]

Résultat

var oracleTitle= ['oracle1','oracle2','oracle3','oracle4']
var oracleEndpnt = [['1','3'],['1','2'],['1','3'],[]]


function Oracle(name, endpnt) {
  this.name = name;
  this.endpnt = endpnt

}

var oracles = []

for(var i=0;i<oracleTitle.length;i++) {

  oracles.push(new Oracle(oracleTitle[i],oracleEndpnt[i]))

}

console.log(oracles)


3 commentaires

Est-ce que cela répond à votre question? Comment convertir une chaîne en entier en JavaScript?


Changez simplement Oracle pour faire la carte: this.endpnt = endpnt.map(i => +i);


J'ai pris en compte les réponses de chacun pour différentes variantes pour résoudre ce problème merci.


3 Réponses :


0
votes

Si je comprends bien, cela devrait faire:

var oracles = [
  { name: 'oracle1', endpnt: [ '1', '3' ] },
  { name: 'oracle2', endpnt: [ '1', '2' ] },
  { name: 'oracle3', endpnt: [ '1', '3' ] },
  { name: 'oracle4', endpnt: [] }
]

var r = oracles.map(x => {
  x.endpnt = x.endpnt.map(z => Number(z))
  return x
})

console.log(r)


1 commentaires

Votre code a également pu résoudre mon problème merci. @maioman



1
votes

Si vous ne voulez pas changer tout le code, vous pouvez exécuter une carte pour le deuxième tableau

var oracleTitle= ['oracle1','oracle2','oracle3','oracle4']
var oracleEndpnt = [['1','3'],['1','2'],['1','3'],[]]


function Oracle(name, endpnt) {
  this.name = name;
  this.endpnt = endpnt

}

var oracles = []

for(var i=0;i<oracleTitle.length;i++) {
// Change this part
  oracles.push(new Oracle(oracleTitle[i],oracleEndpnt[i].map(num => parseInt(num))));

}

console.log(oracles)


4 commentaires

La destruction / la réagrégation du tableau que vous utilisez comme deuxième paramètre du constructeur oracle est inutile.


Merci beaucoup, l'exemple que j'ai fourni était des données simulées, mais j'ai utilisé votre solution avec le .map () pour mon problème principal à plus grande échelle et cela a parfaitement fonctionné. Si je ne me trompe pas, nous utilisons la fonction map () en lui passant le paramètre num qui ciblerait chaque élément du tableau, puis analysons chaque élément du tableau et créons un nouveau tableau basé sur les nouveaux résultats ?. Je ne veux tout simplement pas le brancher et ne pas comprendre, corrigez-moi si je me trompe. @VictorShinobiGakiya


@KimaniKelly C'est correct, on mappe ici le tableau qui correspond au titre analysé, dans ce cas puisqu'il s'agit de l'index du tableau est le même que l'index du titre [i], vous n'aurez pas de problème . Si vous deviez avoir un nombre différent de titres / tableaux, cette méthode pourrait vous causer des problèmes


J'ai appliqué cette méthode dans une boucle for qui itérerait sur 90 tableaux pour analyser plusieurs chaînes hexadécimales 32 octets en une chaîne lisible et le résultat a parfaitement fonctionné. @VictorShinobiGakiya



0
votes

var oracleTitle= ['oracle1','oracle2','oracle3','oracle4']
var oracleEndpnt = [['1','3'],['1','2'],['1','3'],[]]
function Oracle(name, endpnt) { this.name = name; this.endpnt = endpnt }

var oracles = oracleTitle.map((s, i) => new Oracle(s, oracleEndpnt[i].map(Number)))

console.log( JSON.stringify(oracles) )


0 commentaires