2 votes

Ajouter des valeurs dans un tableau à deux dimensions en JS

J'essaie d'ajouter des valeurs dans un tableau 2D en fonction de la position présente dans les données d'entrée.

Par exemple, le format ci-dessous représente 0 comme row , 0 comme column y 5 est la longueur de la valeur.

 [
    "0,0,5",
    "hello"
 ],

Comment puis-je insérer les valeurs dans un tableau 2D en fonction de la position, comme suit [0][0] , [0][1] y [0][2] ?

Sauf que dans mon code

const data = [
  [
    "0,0,5",
    "hello"
  ],
  [
    "0,1,10",
    "js is fun!"
  ],
  [
    "0,2,0",
    ""
  ]
]

let array2D = [
  []
];
let i = 0
for (let r = 0; r < data.length; ++r) {
  array2D[r] = [];
  for (let c = 0; c < data.length; ++c) {
    array2D[r][c] = data[i++];
  }
}
console.log(array2D);

2voto

The Bomb Squad Points 1840

Ok, merci pour votre contribution cela signifie que je vais juste faire un function à placer dans un tableau avec 4 arguments col , row , arr & data

//important function
function place2d(row,col,arr,data){
  //row col logic works like arr[row][col]
  arr[row]=arr[row]||[]
  arr[row][col]=data
}

var array2dArray=[]
//this loop would take the data array and place the entire index in the desired destination
data.forEach(a=>{
  var [row,col]=a[0].split(',')
  place2d(row,col,array2dArray,a) //the data to put into each part of the 2d array would an array itself(like data[0])
})
console.log(array2dArray)

//but I might just wanna put the text in the 2d array
var text2dArray=[]
data.forEach(a=>{
  var [row,col]=a[0].split(',')
  place2d(row,col,text2dArray,a[1]) //the data to be put in each part of the 2d array would be the a text variable(like data[0][1] is "hello")
})
console.log(text2dArray)

<script>
//sry it just takes space in the js part that's unnessecary
window.data = [
  [
    "0,0,5",
    "hello"
  ],
  [
    "0,1,10",
    "js is fun!"
  ],
  [
    "0,2,0",
    ""
  ]
]
</script>

Avec cette fonction, vous pouvez prendre un tableau vide, placer la rangée 10 col 4 dans le tableau vide en mettant n'importe quelle donnée comme 'xD' et cela fonctionnera ex : try place2d(10,4,emptyArrName,"xD") et ça marche juste une chose à noter

Il n'applique les structures de tableau que là où il le faut faire des choses comme l'exemple ci-dessus laisserait beaucoup d'emplacements non définis exemple sauvage ci-dessous

//now for a wild example to show that the function works
window.data2=[
  ["text for [10][0]","0/10"],
  ["text for [2][5]","5/2"]
]
//don't forget the placer function :D
function place2d(row,col,arr,data){
  //row col logic works like arr[row][col]
  arr[row]=arr[row]||[]
  arr[row][col]=data
}
//at the end of the day, all I'm changing is the information I make out of the array in the forEach loops in order to simply place in the function
var finalArray=[]
place2d(3,4,finalArray,"randomDataThatCouldBe_ANYTHING_notJustText")
data2.forEach(a=>{
  var [col,row]=a[1].split('/')
  place2d(row,col,finalArray,a[0])
})
console.log(finalArray)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X