1

I have two json: I want to create json with those two array;

 var __columns = ["Field1", "Field2", "Field3", "Field4"];
 var __rows = ["valueField1_1", "valueField2_1", "valueField3_1", "valueField4_1", "valueField1_2", "valueField2_2", "valueField3_2", "valueField4_2", "valueField1_3", "valueField2_3", "valueField3_3", "valueField4_3"];

The thing is that I wanna create something like this

var json = [{
  "Field1":"valueField1_1",
  "Field2":"valueField2_1",
  "Field3":"valueField3_1",
  "Field4":"valueField4_1"
},{
  "Field1":"valueField1_2",
  "Field2":"valueField2_2",
  "Field3":"valueField3_2",
  "Field4":"valueField4_2"
},{
  "Field1":"valueField1_3",
  "Field2":"valueField2_3",
  "Field3":"valueField3_3",
  "Field4":"valueField4_3"
}]

3 Answers 3

3

ES6 solution using Array.from and Array#reduce methods.

var __columns = ["Field1", "Field2", "Field3", "Field4"];
var __rows = ["valueField1_1", "valueField2_1", "valueField3_1", "valueField4_1", "valueField1_2", "valueField2_2", "valueField3_2", "valueField4_2", "valueField1_3", "valueField2_3", "valueField3_3", "valueField4_3"];

var res = Array.from({
  // generate array with particular size
  length: __rows.length / __columns.length
    // use map function to generate array element
}, (_, i) => __columns.reduce((obj, e, i1) => {
  // define object property based on the index values
  obj[e] = __rows[i * __columns.length + i1];
  return obj;
  // set empty object as initial argument
}, {}));


console.log(res);

Sign up to request clarification or add additional context in comments.

Comments

2
function convertToJsonArr(__columns, __rows){
var obj = {};
var arr = [];
var len = __columns.length; 
var count = 0;

$.each(__rows , function(key, value){

  if(count >= len){
     count = 0;
     arr.push(obj);
     obj = {};
  }
obj[__columns[count++]] = value;

})

arr.push(obj);

return arr;

} 

you can call like convertToJsonArr(__columns, __rows);

Comments

0

One way to achieve this is using loops

var __columns = ["Field1", "Field2", "Field3", "Field4"];
var __rows = ["valueField1_1", "valueField2_1", "valueField3_1", "valueField4_1", "valueField1_2", "valueField2_2", "valueField3_2", "valueField4_2", "valueField1_3", "valueField2_3", "valueField3_3", "valueField4_3"];

var arr = [];
for(var i = 0; i < __rows.length; i = i + __columns.length){
   var tempObj = {};
   for(var j = 0; j < __columns.length; ++j){
       tempObj[__columns[j]] = __rows[i];
   }
   arr.push(tempObj);
}

console.log(arr);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.