简体   繁体   中英

How to access elements of arrays within array (JavaScript)?

I'm trying to access elements from a JavaScript array:

[["1","John"],["2","Rajan"],["3","Hitesh"],["4","Vin"],["5","ritwik"],["6","sherry"]]

I want to access 1, 2, 3, 4, 5, 6 separately in a variable and John, Rajan, Hitesh, Vin, Ritwik, Sherry separately in a variable. I tried converting it to a string and split(), but it doesn't work.

this is code i tried

var jArray = <?php echo json_encode($newarray); ?> ;    
var nJarr = jArray[0]; nJarr.toString();    
var res = nJarr.split(","); var apname = res[0];    
alert(apname); 

but there's no alert appearing on the screen

If you are open to using Underscore, then it's just

var transposed = _.zip.apply(0, arr);

and the arrays you are looking for will be in transposed[0] and transposed[1] .

You can write your own transpose function fairly easily, and it's more compact if you can use ES6 syntax:

transpose = arr => Object.keys(arr[0]).map(i => arr.map(e => e[i]));

>> transpose([["1","John"], ["2","Rajan"], ...]]
<< [[1, 2, ...], ["John", "Rajan", ...]]

If you want an ES5 version, here's one with comments:

function transpose(arr) {          // to transpose an array of arrays
    return Object.keys(arr[0]) .   // get the keys of first sub-array
        map(function(i) {          // and for each of these keys
            arr .                  // go through the array
                map(function(e) {  // and from each sub-array 
                    return e[i];   // grab the element with that key
                })
        ))
    ;
}

If you prefer old-style JS:

function transpose(arr) {

    // create and initialize result
    var result = [];
    for (var i = 0; i < arr[0].length; i++ ) { result[i] = []; }

    // loop over subarrays
    for (i = 0; i < arr.length; i++) {
        var subarray = arr[i];

        // loop over elements of subarray and put in result
        for (var j = 0; j < subarray.length; j++) {
            result[j].push(subarray[j]);
        }
    }

    return result;
}

Do it like bellow

var arr = [["1","John"],["2","Rajan"],["3","Hitesh"],["4","Vin"],["5","ritwik"],["6","sherry"]];
var numbers = arr.map(function(a){return a[0]}); //numbers contain 1,2,3,4,5
var names = arr.map(function(a){return a[1]}); //names contain John,Rajan...

Try this:

var data = [["1","John"],["2","Rajan"],["3","Hitesh"],["4","Vin"],["5","ritwik"],["6","sherry"]];
var IDs = [];
var names = [];
for(i=0; i<data.length; i++)
{
   IDs.push(data[i][0]);
   names.push(data[i][1]);
}

 console.log(IDs);
 console.log(names);

Here is the working fiddle .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM