hisoka Posted June 12, 2018 Share Posted June 12, 2018 I a script in this page : https://stackoverflow.com/questions/24094466/javascript-sum-two-arrays-in-single-iteration this is the script : var array1 = [1,2,3,4]; var array2 = [5,6,7,8]; var sum = array1.map(function (num, idx) { return num + array2[idx]; }); the above script adds elements of two arrays . However , I did not understand it . I read about the map() function here : https://www.w3schools.com/jsref/jsref_map.asp Still I did not understand what it means by Quote The map() method creates a new array with the results of calling a function for every array element. When I changed the num and idx with other values like for example numb and rx , it says : Quote idx is not defined Quote num is not defined but in this page https://www.w3schools.com/jsref/jsref_map.asp num and idx are not mentioned as necessary parameters for the function I thought these parameters are normal like any other function parameters and therefore they can be named anything . I do not understand what script does in the last two lines . one last thing when I changed the PLUS value to XOR value , I got an incomplete result : var array1 = [1,2,3,4]; var array2 = [5,6,7,8]; var sum = array1.map(function (num , idx ) { console.log(num ^ array2[idx]); return num ^ array2[idx]; }); I got 4 12 as a result instead of 4 4 4 12 why ? Link to comment Share on other sites More sharing options...
justsomeguy Posted June 12, 2018 Share Posted June 12, 2018 I thought these parameters are normal like any other function parameters and therefore they can be named anything . They can. If you want to change the name of a variable, change it in every place. You changed them in one place but you're still trying to use the old names, so that's the error. If you want to understand what map does, these 2 are functionally equivalent: var ar2 = ar1.map(func); var ar2 = []; for (var i = 0; i < ar1.length; i++) { ar2[i] = func(ar1[i], i); } I got 4 12 as a result instead of 4 4 4 12 why ? You're reading the output wrong. If you print the array sum, you'll see it contains 4 elements. Your console is probably only printing the 4 once but indicating somewhere on the right side that it was printed 3 times. 1 Link to comment Share on other sites More sharing options...
hisoka Posted June 12, 2018 Author Share Posted June 12, 2018 var ar2 = ar1.map(func); var ar2 = []; for (var i = 0; i < ar1.length; i++) { ar2[i] = func(ar1[i], i); } according to the above , and if we take this in consideration : var array1 = [1,2,3,4]; var array2 = [5,6,7,8]; var sum = array1.map(function (num, idx) { return num + array2[idx]; }); // I understand that the map function creates an empty array . as mentioned in this page https://www.w3schools.com/jsref/jsref_map.asp then loop through every element in the array1 and add it to the first index element of the array2 until all elements of arrays one and two are added then each time assigns the result to the new created array . Is it so or I am wrong ? Link to comment Share on other sites More sharing options...
justsomeguy Posted June 13, 2018 Share Posted June 13, 2018 That's what that particular code does, yes. If that's what you're going to do though, I would do it with a for loop so it's more obvious what you're doing. var sum = []; for (var i = 0; i < ar1.length; i++) { sum[i] = ar1[i] + ar2[i]; } 1 Link to comment Share on other sites More sharing options...
hisoka Posted June 13, 2018 Author Share Posted June 13, 2018 thank you very much Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now