2016-06-17 6 views
1

Ich habe das Array von Objekten, die ich in die Excel-Datei schreiben werde. Ich habe soo viele Array von Objekten wie diesesWie man das Array von Objekteigenschaften mit Javascript oder Lodash neu anordnet

[{'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'}] 

ich die Objekte Objekte wie dieses, so dass in der Excel-Erste Spalte es aus der reg Nr

Startet neu anordnen möchten
[{'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'} 
    ] 

Kann jemand Hilfe Ich darüber.

+3

tatsächlich können Sie die Eigenschaften eines Objekts nicht ordnen. –

+0

danke @NinaScholz für Ihre Antwort. Gibt es einen Vorschlag, wie wir das ändern können? – Jeevan

+0

können Sie stattdessen ein Array mit einer definierten Reihenfolge verwenden, wie im Beispiel '[['abc, 1234,' mech ', '11/12/2014', /*...*/]]' ' –

Antwort

0

Sie können nicht die Eigenschaften eines Objekts javascript bestellen, aber Sie können Ihre Daten in eine array Struktur:

[ 
    [ 
     {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

Sie können die Header-Template neu zu ordnen verwenden. Zum Beispiel:

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

Ich denke, eine Möglichkeit, diesen Job zu machen, ist die Verwendung des neuen Map-Objekts. Es wird die Reihenfolge der Einfügung der Schlüsselwertpaare beibehalten. Sie können sie einfach separat (Map.prototype.keys() oder Map.prototype.values()) oder zusammen (Map.prototype.entries()) in der Reihenfolge, in der sie eingefügt werden, aufrufen und die Map so verwenden, wie Sie möchten. Mal sehen ...

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

Dies ist ein Vorschlag mit einem Array. Das erste Element ist ein Array mit der Spaltenbeschreibung. Der Rest der Elemente enthält die gewünschten Elemente mit der gewünschten Reihenfolge.

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

Wie andere hier gezeigt haben, nach dem ECMAScript-Standard ist die Reihenfolge der Schlüssel in einem Objekt nicht festgelegt. Die meisten JavaScript-Engines durchlaufen jedoch die Schlüssel eines Objekts in der Reihenfolge ihrer Erstellung. So könnte man so etwas tun:

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

Damit ruft reorder({ a: 3, b: 5, c: 6}, ['b', 'c', 'a']) wird höchstwahrscheinlich die Sie { b: 5, c: 6, a: 3 }.

Verwandte Themen