2016-06-17 4 views
1

私はExcelファイルに書き込むオブジェクトの配列を持っています。私はこのjavascriptまたはlodashを使用してオブジェクトのプロパティの配列を並べ替える方法

[{'FirstName':'abc','Reg-no':1234,'branch':'mech','ReportDate':'11/12/2014','LastName':'HR'},{'FirstName':'xyz','Reg-no':1235,'branch':'CS','ReportDate':'11/12/2015','LastName':'BC'},{'FirstName':'pqr','Reg-no':1236,'branch':'IS','ReportDate':'11/12/2016','LastName':'TY'}] 

のようなオブジェクトの洙多くの配列が生じています、私はエクセルまず列に、それはREG号

[{'Reg-no':1234,'ReportDate':'11/12/2014','FirstName':'abc','LastName':'HR','branch':'mech'}, 
    {'Reg-no':1235,'ReportDate':'11/12/2015','FirstName':'xyz','LastName':'BC','branch':'CS'}, 
    {'Reg-no':1236,'ReportDate':'11/12/2016','FirstName':'pqr','LastName':'TY','branch':'IS'} 
    ] 

から始まるように、このようなオブジェクトのプロパティを並べ替えたい誰でも助けることができます私はこれについて。

+3

実際には、オブジェクトのプロパティを並べ替えることはできません。あなたの返事には@ NinaScholzに感謝します。 –

+0

それを修正する方法はありますか? – Jeevan

+0

あなたは '[['abc、1234、' mech '、'11/12/2014'、/*...*/]]のような定義された順序で代わりに配列を使うことができます' –

答えて

0

あなたはjavascriptオブジェクトのプロパティを注文することはできませんが、arrayにデータを構造化することができます。

[ 
    [ 
     {name: 'Reg-no', value: 1234}, 
     {name: 'ReportDate', value: '11/12/2014'}, 
     {name: 'FirstName', value: 'abc'}, 
     {name: 'LastName', value: 'HR'}, 
     {name: 'branch', value: 'mech'} 
    ], 
    [ 
     {name: 'Reg-no', value: 1235}, 
     {name: 'ReportDate', value: '11/12/2014'}, 
     {name: 'FirstName', value: 'abc'}, 
     {name: 'LastName', value: 'HR'}, 
     {name: 'branch', value: 'mech'} 
    ], 
    [ 
     {name: 'Reg-no', value: 1236}, 
     {name: 'ReportDate', value: '11/12/2014'}, 
     {name: 'FirstName', value: 'abc'}, 
     {name: 'LastName', value: 'HR'}, 
     {name: 'branch', value: 'mech'} 
    ] 
] 
0

あなたが順序を変更するために、ヘッダーテンプレートを使用することができます。例:

var headerTemplate = [ 'A', 'B', 'C', 'D' ]; 

// Unsorted data 
var data = [ { C: '1:4', A: '1:3', B: '1:2', D: '1:1' }, 
      { B: '2:4', C: '2:3', D: '2:2', A: '2:1' }, 
      { C: '3:4', B: '3:3', D: '3:2', A: '3:1' } ] 

var reorderedData = []; 
while (data.length>0) { 
    var row = data.shift(); 
    var reorderedRow = []; 
    headerTemplate.forEach(function(ch) { 
    reorderedRow.push(row[ch]); 
    }); 
    reorderedData.push(reorderedRow); 
} 
console.log(reorderedData) // ==> 

// [ [ '1:3', '1:2', '1:4', '1:1' ], 
// [ '2:1', '2:4', '2:3', '2:2' ], 
// [ '3:1', '3:3', '3:4', '3:2' ] ] 
0

このジョブを実行する方法の1つは、新しいMapオブジェクトを使用することです。これは、キー値のペアの挿入順序を維持します。それらを別々に(Map.prototype.keys()またはMap.prototype.values())または一緒に(Map.prototype.entries())を挿入した順番で簡単にアクセスして、好きなようにマップを利用することができます。これは、アレイと提案です

var data = [{'Reg-no':1234,'ReportDate':'11/12/2014','FirstName':'abc','LastName':'HR','branch':'mech'}, 
 
      {'Reg-no':1235,'ReportDate':'11/12/2015','FirstName':'xyz','LastName':'BC','branch':'CS'}, 
 
      {'Reg-no':1236,'ReportDate':'11/12/2016','FirstName':'pqr','LastName':'TY','branch':'IS'}], 
 
datamaps = data.map(o => new Map().set("Reg-no" ,o["Reg-no"]) 
 
            .set("ReportDate",o.ReportDate) 
 
            .set("FirstName" ,o.FirstName) 
 
            .set("LastName" ,o.LastName) 
 
            .set("branch" ,o.branch)); 
 
console.log(...datamaps[0].entries());

1

...見てみましょう。最初の要素は、列の説明を持つ配列です。要素の残りの部分には、必要な順序で必要な項目が含まれています。その他など

var data = [{ 'FirstName': 'abc', 'Reg-no': 1234, 'branch': 'mech', 'ReportDate': '11/12/2014', 'LastName': 'HR' }, { 'FirstName': 'xyz', 'Reg-no': 1235, 'branch': 'CS', 'ReportDate': '11/12/2015', 'LastName': 'BC' }, { 'FirstName': 'pqr', 'Reg-no': 1236, 'branch': 'IS', 'ReportDate': '11/12/2016', 'LastName': 'TY' }], 
 
    keys = ['Reg-no', 'ReportDate', 'FirstName', 'LastName', 'branch'], 
 
    array = [keys].concat(data.map(function (a) { 
 
     return keys.map(function (k) { 
 
      return a[k]; 
 
     }); 
 
    })); 
 

 

 
console.log(array);

0

オブジェクト内のキーの順序が固定されていないのECMAScript規格によれば、ここで指摘しています。しかし、ほとんどのjavascriptエンジンは、オブジェクトのキーを作成順に反復処理します。これにより

function reorder(obj, keys) { 
    return keys.reduce((newObj, key) => { 
     newObj[key] = obj[key]; 
     return newObj; 
    }, {}); 
} 

reorder({ a: 3, b: 5, c: 6}, ['b', 'c', 'a'])が最も可能性の高いあなたに{ b: 5, c: 6, a: 3 }を与える呼び出し:だからあなたは、このような何かを行うことができます。

関連する問題