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>
0
James 7 mars 2016 à 04:04

3 réponses

Meilleure réponse

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, puis forEach. 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 appliquez sort et forEach. Non destructif.
2
Amadan 7 mars 2016 à 01:09

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);
1
RobG 7 mars 2016 à 01:17

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.

1
Cilan 7 mars 2016 à 01:18