2017-11-29 24 views
1

2次元配列(配列の配列)に変換する必要があります。私はmapとObject.keys()を試してみましたが、各オブジェクトの最初の値を最初の配列に、2番目の値を2番目の配列にプッシュしたいと思います。オブジェクトの配列を2次元配列

良い結果

[ 
    ['2', '5', '8', '10', '12'], 
    ['4', '10', '16', '20', '24'], 
    ['6', '15', '24', '30', '36'], 
    ['10', '25', '40', '50', '60'] 
] 

実際の結果

[ 
    ['2', '4', '6', '10'], 
    ['5', '10', '15', '25'], 
    ['8', '16', '24', '40'], 
    ['10', '20', '30', '50'], 
    ['12', '24', '36', '60'] 
] 

let obj = [ 
 
    { 
 
    line1: '2', 
 
    line2: '4', 
 
    line3: '6', 
 
    line4: '10' 
 
    }, { 
 
    line1: '5', 
 
    line2: '10', 
 
    line3: '15', 
 
    line4: '25' 
 
    }, { 
 
    line1: '8', 
 
    line2: '16', 
 
    line3: '24', 
 
    line4: '40' 
 
    }, { 
 
    line1: '10', 
 
    line2: '20', 
 
    line3: '30', 
 
    line4: '50' 
 
    }, { 
 
    line1: '12', 
 
    line2: '24', 
 
    line3: '36', 
 
    line4: '60' 
 
    } 
 
]; 
 

 
var output = obj.map(function(obj) { 
 
    return Object.keys(obj).map(function(key) { 
 
    return obj[key]; 
 
    }); 
 
}); 
 

 
console.log(output);

+0

** JSオブジェクトは**順不同構造です - あなたは、キー/値の厳密な順序を持つことはできません。 https://stackoverflow.com/questions/5525795/does-javascript-guarantee-object-property-order – RomanPerekhrest

答えて

3

あなたはtransfomingの指標を必要とし、結果セットにアクセスするための逆のインデックスを取ります。

var array = [{ line1: '2', line2: '4', line3: '6', line4: '10' }, { line1: '5', line2: '10', line3: '15', line4: '25' }, { line1: '8', line2: '16', line3: '24', line4: '40' }, { line1: '10', line2: '20', line3: '30', line4: '50' }, { line1: '12', line2: '24', line3: '36', line4: '60' }], 
 
    result = array.reduce((r, o, i) => { 
 
     Object.keys(o).forEach((k, j) => (r[j] = r[j] || [])[i] = o[k]); 
 
     return r; 
 
    }, []); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

安定した結果については、あなたは、事前に配列としてキーを取ることができます。

var array = [{ line1: '2', line2: '4', line3: '6', line4: '10' }, { line1: '5', line2: '10', line3: '15', line4: '25' }, { line1: '8', line2: '16', line3: '24', line4: '40' }, { line1: '10', line2: '20', line3: '30', line4: '50' }, { line1: '12', line2: '24', line3: '36', line4: '60' }], 
 
    keys = ['line1', 'line2', 'line3', 'line4'], 
 
    result = array.reduce((r, o, i) => { 
 
     keys.forEach((k, j) => (r[j] = r[j] || [])[i] = o[k]); 
 
     return r; 
 
    }, []); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

1

また、アプローチ、以下を使用することができます。

let obj = [ 
 
    { 
 
    line1: '2', 
 
    line2: '4', 
 
    line3: '6', 
 
    line4: '10' 
 
    }, { 
 
    line1: '5', 
 
    line2: '10', 
 
    line3: '15', 
 
    line4: '25' 
 
    }, { 
 
    line1: '8', 
 
    line2: '16', 
 
    line3: '24', 
 
    line4: '40' 
 
    }, { 
 
    line1: '10', 
 
    line2: '20', 
 
    line3: '30', 
 
    line4: '50' 
 
    }, { 
 
    line1: '12', 
 
    line2: '24', 
 
    line3: '36', 
 
    line4: '60' 
 
    } 
 
]; 
 

 
var output = []; 
 
for(var i = 0; i < obj.length; i++){ 
 
    var index = 0; 
 
    for(var values in obj[i]){ 
 
     if(output[index] == undefined){ 
 
     output[index] = []; 
 
     } 
 
     output[index].push(obj[i][values]); 
 
     index++; 
 
    } 
 
} 
 

 
console.log(output);