2016-09-09 7 views
1

私は2つのjsonを持っています: 私はそれらの2つの配列でjsonを作成したいと思います。javascriptで2つの配列を持つjsonを作成する方法

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"]; 

事は、私がArray.fromArray#reduceメソッドを使用して、この

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

ES6液のようなものを作成したいということです。これを達成するための

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);

0

一つの方法は、ループ

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);

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; 

} 

あなたは(列、__rows __)convertToJsonArrのように呼び出すことができますを使用しています。

+0

ありがとうございます!それは私が必要とするように実行 – Joy

関連する問題