Friday, May 10, 2024
 Popular · Latest · Hot · Upcoming
184
rated 0 times [  186] [ 2]  / answers: 1 / hits: 23701  / 11 Years ago, thu, june 27, 2013, 12:00:00

I have two arrays, one which holds the keys and one which holds arrays, each array containing values. I would like to make an array of objects, where each object pairs the keys and values. To do this, I created an array, and I am now trying to create and fill objects before pushing them into the array. My code looks similar to this:



var keys = [key1, key2, key3];
var values = [
[A-value1, A-value2, A-value3],
[B-value1, B-value2, B-value3],
[C-value1, C-value2, C-value3]
];

var arrayOfObjecs = [];
for(var i=0; i<values.length; i++){
var obj = {
for(var j=0; j<values[i].length; j++){
keys[j] : values[i][j];
}
};
arrayOfObjects.push(obj);
}


In the end, I would like for my arrayOfObjects to look like this:



var arrayOfObjects = [
{
key1 : A-value1,
key2 : A-value2,
key3 : A-value3
},
{
key1 : B-value1,
key2 : B-value2,
key3 : B-value3
},
{
key1 : C-value1,
key2 : C-value2,
key3 : C-value3
}
];


This question is similar to what I want to do, yet it won't allow me to loop a second time within the object.


More From » arrays

 Answers
16

Your question is in fact about the object properties square bracket notation :

using object[propertyname] is the same as using object.propertyname.



var myObj  = {};
myObj['x'] = 12;
console.log(myObj.x); -->> prints 12


Now in your code :



var arrayOfObjects = [];
for(var i=0; i<values.length; i++){
var obj = {};
for(var j=0; j<values[i].length; j++){
obj[keys[j]] = values[i][j];
}
arrayOfObjects.push(obj);
}


In reply to 'it does weird things' : this code works.



with this input :



var keys = ['key1', 'key2', 'key3'];
var values = [
[12,112, 1112],
[31, 331, 3331],
[64, 65, 66]
];


the output is :



   {   {key1: 12, key2: 112, key3: 1112},  
{key1: 31, key2: 331, key3: 3331},
{key1: 64, key2: 65, key3: 66} }


fiddle is here :
http://jsfiddle.net/fyt8A/


[#77353] Thursday, June 27, 2013, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
johnathanhakeems

Total Points: 487
Total Questions: 129
Total Answers: 100

Location: Fiji
Member since Fri, Nov 13, 2020
4 Years ago
;