Guest Guest
Guest Guest

Reputation: 421

Convert json multidimensional to array javascript

I would like to convert Json data to an array Javascript, that I can access like using array[0][0], someone can help me please.

[
    {
        "Login": "test1",
        "Nom": "test1",
        "Prenom": "test1p",
        "password": "124564",
        "Email": "[email protected]"
    },
    {
        "Login": "test2",
        "Nom": "test2",
        "Prenom": "test2p",
        "password": "124564",
        "Email": "[email protected]"
    }
]

I tried this piece of code but nothing happen , I can't access to a specific(Exemple I would like to have Nom) data in array using for example array[0][1].

Code.js

var data = [
    {
        "Login": "test1",
        "Nom": "test1",
        "Prenom": "test1p",
        "password": "1267846",
        "Email": "[email protected]"
    },
    {
        "Login": "test2",
        "Nom": "test2",
        "Prenom": "test2p",
        "password": "124494",
        "Email": "[email protected]"
    }
];

function data_to_array(data) {
    var array = [];
    for (var key in data) {
        var value = data[key];
        if (typeof value === 'string') {
            array[key] = value;
        } else {
            array[key] = data_to_array(value);
        }
    }
    return array;
}

var array = data_to_array(data);
for(var i in array)
    console.log(array[i]);   

Once parsed, if I try to access it using myArr[0][1], it shows as undefined.

Upvotes: 3

Views: 941

Answers (2)

vivek_nk
vivek_nk

Reputation: 1600

you have confused with the array and objects. All arrays are objects. but not all objects are arrays. You use "for..in" loop in wrong understanding on array containing objects. If you add more console statements and check, you can understand how it works. Let me give reqd. solution for your scenario.

var data = [
    {
        "Login": "test1",
        "Nom": "test1",
        "Prenom": "test1p",
        "password": "1267846",
        "Email": "[email protected]"
    },
    {
        "Login": "test2",
        "Nom": "test2",
        "Prenom": "test2p",
        "password": "124494",
        "Email": "[email protected]"
    }
];

function data_to_array(data) {
    var array = [];
    for (var i=0;i<data.length;i++) {
        var obj = data[i];
        array[i] = new Array();
        for(var key in obj) {
            array[i].push(obj[key]);
        }
    }
    return array;
}

var array = data_to_array(data);
console.log(array);

Upvotes: 0

maček
maček

Reputation: 77826

var arr = [];

for (var i=0, len=data.length, tmp; i<len; i++) {
  tmp = [];
  for (var k in data[i]) {
    if (data[i].hasOwnProperty(k)) {
      tmp.push(data[i][k]);
    }
  }
  arr.push(tmp);
}

arr;
// [
//   ["test1","test1","test1p","124564","[email protected]"],
//   ["test2","test2","test2p","124564","[email protected]"]
// ]

If you can rely on es5 functions, you can use Array.prototype.map and Object.keys

var arr = data.map(function(e) {
  return Object.keys(e).map(function(k) { return e[k]; });
});

arr;
// [
//   ["test1","test1","test1p","124564","[email protected]"],
//   ["test2","test2","test2p","124564","[email protected]"]
// ]

Upvotes: 1

Related Questions