Jump to content
Zerivo

Array problem

Recommended Posts

Hello i try make it like:

<html><head> <script type="text/javascript">
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];
}
</script></head><body>
<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 this post


Link to post
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 this post


Link to post
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 this post


Link to post
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.

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...