Est-il possible de modifier ce qui suit de sorte que sur le foreach, il s'inverse pour que la dernière date des données soit la première plutôt que la plus ancienne au plus récente?
var json = {
"TrackingRecord": {
"Authorised": "Authorised(5.77.48.131)",
"DeliveryAddress": {
"CompanyName": "JAMES DERICK",
"Address1": "6",
"Address2": "LIBER HOUSE",
"Address3": "OLYMPIAN",
"Town": "YORK",
"Postcode": "YO10 3UF",
"ContactName": "JAMES DERICK",
"ContactTelephone": "7507346318"
},
"CollectionAddress": {
"CompanyName": "AMBIENT LOUNGE LTD",
"Address1": "UNIT 3 LONG HEDGE LANE INDUSTR",
"Address2": "BOTTESFORD",
"Address3": {
},
"Town": "NOTTINGHAM",
"Postcode": "NG13 0BF",
"ContactName": "SARAH KIRBY",
"ContactTelephone": "07879 442266074"
},
"ConsignmentInformation": {
"Pieces": "1",
"Pallets": "0",
"Weight": "10",
"Service": "Priority 1",
"DeliveryDate": "2016-02-29T00:00:00",
"ItemsDelivered": "1",
"ConsignmentRef": "2838",
"SpecialInstructions": "JAMES DERICK 7507346318 {JAMES\u003Cbr\u003E14075@GMAIL.COM}\u003Cbr\u003E",
"AdditionalReferencesInformation": {
"AdditionalReferences": {
"Reference": "2838"
}
}
},
"MovementInformation": {
"Movement": [{
"MovementDate": "2016-02-25T00:00:00",
"MovementTime": "0001-01-01T10:00:04",
"Description": "Created By EZEEWEB",
"DeliveryDepot": "Leeds",
"Round": "019",
"DeliveryDate": "2016-02-26T00:00:00",
"PackagesReceived": "0",
"PackagesDelivered": "0"
}, {
"MovementDate": "2016-02-26T00:00:00",
"MovementTime": "0001-01-01T07:11:53",
"Description": "Out to deliver",
"DeliveryDepot": "Leeds",
"Round": "019",
"DeliveryDate": "2016-02-26T00:00:00",
"PackagesReceived": "1",
"PackagesDelivered": "0"
}, {
"MovementDate": "2016-02-26T00:00:00",
"MovementTime": "0001-01-01T11:00:53",
"Description": "Failed - Other reason",
"DeliveryDepot": "Leeds",
"Round": "019",
"DeliveryDate": "2016-02-29T00:00:00",
"PackagesReceived": "1",
"PackagesDelivered": "0"
}, {
"MovementDate": "2016-02-27T00:00:00",
"MovementTime": "0001-01-01T05:59:32",
"Description": "Out to deliver",
"DeliveryDepot": "Leeds",
"Round": "019",
"DeliveryDate": "2016-02-29T00:00:00",
"PackagesReceived": "1",
"PackagesDelivered": "0"
}, {
"MovementDate": "2016-02-29T00:00:00",
"MovementTime": "0001-01-01T10:55:43",
"Description": "Delivered",
"DeliveryDepot": "Leeds",
"Round": "019",
"DeliveryDate": "2016-02-29T00:00:00",
"PackagesReceived": "1",
"PackagesDelivered": "1"
}]
},
"TimedInformation": {
"TimedDelivery": {
"Signature": "DERICK",
"SignatureDate": "2016-02-29T00:00:00",
"SignatureTime": "0001-01-01T10:55:00"
}
},
"ScanInformation": {
"Scan": [{
"PieceID": "148426702251072001",
"Description": "Auto Inbound Scan ()",
"Depot": "Newark",
"ScanDate": "2016-02-25T00:00:00",
"ScanTime": "0001-01-01T17:12:01",
"ScannedBy": "NWK CONVYR"
}, {
"PieceID": "148426702251072001",
"Description": "Auto Inbound Scan ()",
"Depot": "Leeds",
"ScanDate": "2016-02-26T00:00:00",
"ScanTime": "0001-01-01T02:22:08",
"ScannedBy": "LDS CONVYR"
}, {
"PieceID": "148426702251072001",
"Description": "Load C & D (019)",
"Depot": "Leeds",
"ScanDate": "2016-02-26T00:00:00",
"ScanTime": "0001-01-01T03:37:45",
"ScannedBy": "CJONES"
}, {
"PieceID": "148426702251072001",
"Description": "Load C & D (019)",
"Depot": "Leeds",
"ScanDate": "2016-02-26T00:00:00",
"ScanTime": "0001-01-01T23:43:22",
"ScannedBy": "CJONES"
}]
},
"ImageInformation": {
"PODImage": {
"URL": "http:\/\/www.tpeweb.co.uk\/ezpod\/tpenas\/valid\/20160229\/014842672838___________00000_01.tif"
}
}
}
}
json.TrackingRecord.MovementInformation.Movement.forEach(function(item) {
//console.log(item);
item.MovementDate = moment(item.MovementDate).format('ddd, Do of MMM YYYY');
item.MovementTime = moment(item.MovementTime).format('hh:mm a');
$("#movement tbody").append("<tr><td>" + item.MovementDate + "</td><td>" + item.MovementTime + "</td><td>" + item.Description + "</td></tr>");
})
<script src="https://cdn.jsdelivr.net/momentjs/2.11.2/moment.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table id="movement">
<thead>
<tr>
<th>Date</th>
<th>Time</th>
<th>Status</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
3 réponses
Pas avec un simple forEach
. Possibilités:
- Supposons qu'il soit dans l'ordre croissant. Indices de boucle de
length - 1
à0
. Non destructif. - Supposons qu'il soit dans l'ordre croissant. Appliquer
reverse
, puisforEach
. Destructeur. - Supposons qu'il ne soit pas trié. Triez le tableau, puis appliquez
forEach
. Destructeur. - Supposons qu'il ne soit pas trié. Créez un tableau d'index, triez les indices par les valeurs correspondantes dans le tableau, appliquez
forEach
sur les indices et accédez aux membres du tableau. Non destructif. - Supposons qu'il ne soit pas trié. Clonez le tableau à l'aide de
slice
, puis appliquezsort
etforEach
. Non destructif.
Un moyen non destructif d'itérer en arrière sur un tableau (autre qu'un simple boucle) est reductionRight :
json.TrackingRecord.MovementInformation.Movement.reduceRight(function(acc, item) {
// do stuff
}, null);
Tu pourrais changer
json.TrackingRecord.MovementInformation.Movement.forEach(function(item) {
À
json.TrackingRecord.MovementInformation.Movement.reverse().forEach(function(item) {
^^^^^^^^^
var json = {
"TrackingRecord": {
"Authorised": "Authorised(5.77.48.131)",
"DeliveryAddress": {
"CompanyName": "JAMES DERICK",
"Address1": "6",
"Address2": "LIBER HOUSE",
"Address3": "OLYMPIAN",
"Town": "YORK",
"Postcode": "YO10 3UF",
"ContactName": "JAMES DERICK",
"ContactTelephone": "7507346318"
},
"CollectionAddress": {
"CompanyName": "AMBIENT LOUNGE LTD",
"Address1": "UNIT 3 LONG HEDGE LANE INDUSTR",
"Address2": "BOTTESFORD",
"Address3": {
},
"Town": "NOTTINGHAM",
"Postcode": "NG13 0BF",
"ContactName": "SARAH KIRBY",
"ContactTelephone": "07879 442266074"
},
"ConsignmentInformation": {
"Pieces": "1",
"Pallets": "0",
"Weight": "10",
"Service": "Priority 1",
"DeliveryDate": "2016-02-29T00:00:00",
"ItemsDelivered": "1",
"ConsignmentRef": "2838",
"SpecialInstructions": "JAMES DERICK 7507346318 {JAMES\u003Cbr\u003E14075@GMAIL.COM}\u003Cbr\u003E",
"AdditionalReferencesInformation": {
"AdditionalReferences": {
"Reference": "2838"
}
}
},
"MovementInformation": {
"Movement": [{
"MovementDate": "2016-02-25T00:00:00",
"MovementTime": "0001-01-01T10:00:04",
"Description": "Created By EZEEWEB",
"DeliveryDepot": "Leeds",
"Round": "019",
"DeliveryDate": "2016-02-26T00:00:00",
"PackagesReceived": "0",
"PackagesDelivered": "0"
}, {
"MovementDate": "2016-02-26T00:00:00",
"MovementTime": "0001-01-01T07:11:53",
"Description": "Out to deliver",
"DeliveryDepot": "Leeds",
"Round": "019",
"DeliveryDate": "2016-02-26T00:00:00",
"PackagesReceived": "1",
"PackagesDelivered": "0"
}, {
"MovementDate": "2016-02-26T00:00:00",
"MovementTime": "0001-01-01T11:00:53",
"Description": "Failed - Other reason",
"DeliveryDepot": "Leeds",
"Round": "019",
"DeliveryDate": "2016-02-29T00:00:00",
"PackagesReceived": "1",
"PackagesDelivered": "0"
}, {
"MovementDate": "2016-02-27T00:00:00",
"MovementTime": "0001-01-01T05:59:32",
"Description": "Out to deliver",
"DeliveryDepot": "Leeds",
"Round": "019",
"DeliveryDate": "2016-02-29T00:00:00",
"PackagesReceived": "1",
"PackagesDelivered": "0"
}, {
"MovementDate": "2016-02-29T00:00:00",
"MovementTime": "0001-01-01T10:55:43",
"Description": "Delivered",
"DeliveryDepot": "Leeds",
"Round": "019",
"DeliveryDate": "2016-02-29T00:00:00",
"PackagesReceived": "1",
"PackagesDelivered": "1"
}]
},
"TimedInformation": {
"TimedDelivery": {
"Signature": "DERICK",
"SignatureDate": "2016-02-29T00:00:00",
"SignatureTime": "0001-01-01T10:55:00"
}
},
"ScanInformation": {
"Scan": [{
"PieceID": "148426702251072001",
"Description": "Auto Inbound Scan ()",
"Depot": "Newark",
"ScanDate": "2016-02-25T00:00:00",
"ScanTime": "0001-01-01T17:12:01",
"ScannedBy": "NWK CONVYR"
}, {
"PieceID": "148426702251072001",
"Description": "Auto Inbound Scan ()",
"Depot": "Leeds",
"ScanDate": "2016-02-26T00:00:00",
"ScanTime": "0001-01-01T02:22:08",
"ScannedBy": "LDS CONVYR"
}, {
"PieceID": "148426702251072001",
"Description": "Load C & D (019)",
"Depot": "Leeds",
"ScanDate": "2016-02-26T00:00:00",
"ScanTime": "0001-01-01T03:37:45",
"ScannedBy": "CJONES"
}, {
"PieceID": "148426702251072001",
"Description": "Load C & D (019)",
"Depot": "Leeds",
"ScanDate": "2016-02-26T00:00:00",
"ScanTime": "0001-01-01T23:43:22",
"ScannedBy": "CJONES"
}]
},
"ImageInformation": {
"PODImage": {
"URL": "http:\/\/www.tpeweb.co.uk\/ezpod\/tpenas\/valid\/20160229\/014842672838___________00000_01.tif"
}
}
}
}
json.TrackingRecord.MovementInformation.Movement.reverse().forEach(function(item) {
//console.log(item);
item.MovementDate = moment(item.MovementDate).format('ddd, Do of MMM YYYY');
item.MovementTime = moment(item.MovementTime).format('hh:mm a');
$("#movement tbody").append("<tr><td>" + item.MovementDate + "</td><td>" + item.MovementTime + "</td><td>" + item.Description + "</td></tr>");
})
<script src="https://cdn.jsdelivr.net/momentjs/2.11.2/moment.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table id="movement">
<thead>
<tr>
<th>Date</th>
<th>Time</th>
<th>Status</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
Gardez à l'esprit que reverse
modifie réellement le tableau, il ne renvoie pas seulement un tableau avec les éléments inversés. Cependant, c'est probablement ce que vous voulez, étant donné qu'il est censé être imprimé dans cet ordre.
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.