soum
soum

Reputation: 1159

combining multiple arrays into an object with first array items as the key

I have these following arrays

var category = ['Guitar', 'Bass', 'Amps'];


var platform_a = ['platform-a1','platform-a2','platform-a3'];
var platform_b = ['platform-b1','platform-b2','platform-b3'];
var platform_c = ['platform-c1','platform-c2','platform-c3'];

And I want to convert them into a json which should look like this

{
    "Guitar":["platform-a1","platform-a2","platform-a3"],
    "Bass":["platform-b1","platform-b2","platform-b3"],
    "Amp":["platform-c1","platform-c2","platform-c3"]
}

How would I do this? I would have to do this in pure javascript

Upvotes: 0

Views: 59

Answers (2)

Giannis Grivas
Giannis Grivas

Reputation: 3412

Let's present three different approaches to your case:

First one

If you want just to create the json object with your data try:

http://jsfiddle.net/csdtesting/tap2xom9/

var platform_a = ['platform-a1', 'platform-a2', 'platform-a3'];
var platform_b = ['platform-b1', 'platform-b2', 'platform-b3'];
var platform_c = ['platform-c1', 'platform-c2', 'platform-c3'];
var category = ['Guitar', 'Bass', 'Amps'];

var obj = {
  Guitar: platform_a,
  Bass: platform_b,
  Amps: platform_c
};
document.write(JSON.stringify(obj));

Second

If you want to create it dynamically do something like that:

http://jsfiddle.net/csdtesting/tap2xom9/

var category = ['Guitar', 'Bass', 'Amps'];
var platform_a = ['platform-a1', 'platform-a2', 'platform-a3'];
var platform_b = ['platform-b1', 'platform-b2', 'platform-b3'];
var platform_c = ['platform-c1', 'platform-c2', 'platform-c3'];

var FinalObject = {};

FinalObject[category[0]] = platform_a;
FinalObject[category[1]] = platform_b;
FinalObject[category[2]] = platform_c;

document.write(JSON.stringify(FinalObject));

Finally

If you want to be more dynamic then try this :

http://jsfiddle.net/csdtesting/kqwz72os/

var FinalObject = {};

var category = ['Guitar', 'Bass', 'Amps'];
var platforms = {
  platform_a: ['platform-a1', 'platform-a2', 'platform-a3'],
  platform_b: ['platform-b1', 'platform-b2', 'platform-b3'],
  platform_c: ['platform-c1', 'platform-c2', 'platform-c3']
};
for (var i = 0; i < category.length; i++) {
  FinalObject[category[i]] = platforms[Object.keys(platforms)[i]];
}

document.write(JSON.stringify(FinalObject));

Hope this helps!

Upvotes: 2

T.J. Crowder
T.J. Crowder

Reputation: 1074208

There's no reasonable shortcut here. You just have to do it manually:

var jsonString = JSON.stringify({
    "Guitar": platform_a,
    "Base": platform_b,
    "Amp": platform_c
});

Upvotes: 1

Related Questions