- Home /
Entering Data into a 2d array overwrite issue.
I've searched all over for a answer about this question, and haven't turned anything up. Essentially when I enter in values to a multidimensional array in Java/Unityscript it overwrites values for all other parts of the Array. I'm starting to think that its something simple I have overlooked. Here is the simple version:
var majorFeatures : Array = new Array();
var emptyArr : Array = new Array();
majorFeatures[0] = emptyArr;
majorFeatures[1] = emptyArr;
majorFeatures[0][0] = "M";
Debug.Log(majorFeatures[0][0]); // Returns value "M"
majorFeatures[1][0] = "O";
Debug.Log(majorFeatures[0][0]); // Returns value "O" when it should still be "M"
I'm confuzzled to the point of hair-pulling. Any guidance not involving degradation is most appreciated!
Answer by vexe · Jul 15, 2014 at 05:06 AM
It's cause you're using the same array object for both the rows.
majorFeatures[0] = emptyArr;
majorFeatures[1] = emptyArr;
majorFeatures[0]
and majorFeatures[1]
point to the same object in memory.
Instantiate a new array for each row instead.
I'm no JS coder, but here's my try:
var nRows : int = 2;
var nCols : int = 10;
var x = new Array(nRows);
for (var i = 0; i < nRows; i++) {
x[i] = new Array(nCols);
}
This was essentially right. I did not know that setting the value to a clean array was not the same as instantiating a new one. Thanks so much!
Your answer
![](https://koobas.hobune.stream/wayback/20220613154105im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Why isn't my word generator working? 1 Answer
Player invisible after reloading scene 1 Answer
Make sure levels assets are loaded before switching? 1 Answer
My character keep walking left. (bug) 0 Answers