# Array problem

## Recommended Posts

Hello i try make it like:

function Code()
{
A=["T1","T2","T3",4,2,1];
var B1=A;var B2=A;var B3=A;
if (A[0]=="T2") {B1[3]=5;}
if (A[1]=="T2") {B2[3]=5;}
if (A[2]=="T2") {B3[3]=5;}
document.getElementById('W1').innerHTML="B1:"+B1[3]
document.getElementById('W2').innerHTML="B2:"+B2[3];
document.getElementById('W3').innerHTML="B3:"+B3[3];
}
<input type="button" value="Code it!" onClick="Code()"><br><br><br>
<div id="W1"></div>
<div id="W2"></div>
<div id="W3"></div>
</body>
when i press button then i got 5 on all B1, B2 and B3. but it should be only B2 have 5 while other got 4.
Why it going wrong?
##### Share on other sites
if i charge it from.
var B1=A;var B2=A;var B3=A;
if (A[0]=="T2") {B1[3]=5;}
if (A[1]=="T2") {B2[3]=5;}
if (A[2]=="T2") {B3[3]=5;}
document.getElementById('W1').innerHTML="B1:"+B1[3];
document.getElementById('W2').innerHTML="B2:"+B2[3];
document.getElementById('W3').innerHTML="B3:"+B3[3];
to (those text with bold are charge)
var B1=A[3];var B2=A[3];var B3=A[3];
if (A[0]=="T2") {B1=5;}
if (A[1]=="T2") {B2=5;}
if (A[2]=="T2") {B3=5;}
document.getElementById('W1').innerHTML="B1:"+B1;
document.getElementById('W2').innerHTML="B2:"+B2;
document.getElementById('W3').innerHTML="B3:"+B3;
so it work fint, it got 5 on B2 while other got 4. but i want charge other number in array too
like:
if (A[0]=="T2") {B1[3]=5;}
if (A[0]=="T2") {B1[4]=2;}
if (A[0]=="T2") {B1[5]=5;} etc
so it save me lots time but it don't work well
Edited by Zerivo
##### Share on other sites

Use for loop to loop through array values, and if condition, and make change if match

`for(i=0; i< A.length; i++){if(a[i]==="T2"){a[i]=5;}}`

you can then put it in a function

`function ChangeArrayValue(valueToMatch, valueToChangeTo){for(i=0; i< A.length; i++){if(a[i]===valueToMatch){a[i]=valueToChangeTo;}}}`

and call it with

`ChangeArrayValue('T2', 5);`
Edited by dsonesuk
##### Share on other sites

Javascript uses references for non-primitive datatypes. when you had B1=A and B2 =A they both "point" to the same memory location of A. Javascript wants to save memory any chance it can so it uses direct references to avoid eating up memory for identical memory values. In order to copy the entire array to a new variable you'll need to manually walk through all its elements and assign them on by one, as dsonesuk demonstrates.

## Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

×   Pasted as rich text.   Paste as plain text instead

Only 75 emoji are allowed.