suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Sortieren Sie ein Array von Objekten basierend auf Eigenschaftswerten

<p>Ich habe die folgenden Objekte mit AJAX erhalten und sie in einem Array gespeichert: </p> <pre class="brush:php;toolbar:false;">var homes = [ { „h_id“: „3“, „Stadt“: „Dallas“, „state“: „Texas“, "zip": "75201", „Preis“: „162500“ }, { „h_id“: „4“, „Stadt“: „Beverly Hills“, „state“: „Kalifornien“, „zip“: „90210“, „Preis“: „319250“ }, { „h_id“: „5“, „Stadt“: „New York“, „state“: „Bundesstaat New York“, „zip“: „00010“, „Preis“: „962500“ } ];</pre> <p>Wie kann ich mit JavaScript eine Funktion erstellen, die Objekte in aufsteigender </strong>absteigender Reihenfolge sortiert, indem ich nur die Eigenschaft <code>price</code> verwende? </p>
P粉561749334P粉561749334471 Tage vor557

Antworte allen(2)Ich werde antworten

  • P粉956441054

    P粉9564410542023-08-22 11:15:39

    这是一个更灵活的版本,允许您创建可重用的排序函数,并按任何字段进行排序。

    const sort_by = (field, reverse, primer) => {
    
      const key = primer ?
        function(x) {
          return primer(x[field])
        } :
        function(x) {
          return x[field]
        };
    
      reverse = !reverse ? 1 : -1;
    
      return function(a, b) {
        return a = key(a), b = key(b), reverse * ((a > b) - (b > a));
      }
    }
    
    
    //现在您可以按任何字段排序...
    
    const homes=[{h_id:"3",city:"Dallas",state:"TX",zip:"75201",price:"162500"},{h_id:"4",city:"Bevery Hills",state:"CA",zip:"90210",price:"319250"},{h_id:"5",city:"New York",state:"NY",zip:"00010",price:"962500"}];
    
    // 按价格从高到低排序
    console.log(homes.sort(sort_by('price', true, parseInt)));
    
    // 按城市排序,不区分大小写,按A-Z排序
    console.log(homes.sort(sort_by('city', false, (a) =>  a.toUpperCase()
    )));

    Antwort
    0
  • P粉493534105

    P粉4935341052023-08-22 11:08:15

    按价格升序排序房屋:

    homes.sort(function(a, b) {
        return parseFloat(a.price) - parseFloat(b.price);
    });
    

    或者在ES6版本之后:

    homes.sort((a, b) => parseFloat(a.price) - parseFloat(b.price));

    可以在这里找到一些文档。

    要按降序排序,您可以使用

    homes.sort((a, b) => parseFloat(b.price) - parseFloat(a.price));

    Antwort
    0
  • StornierenAntwort