按对象键值对javascript中的数组进行排序

IT技术 javascript arrays sorting object
2021-02-12 08:43:15

您将如何按距离对包含这些对象的数组进行排序。所以你有从最小距离到最大距离排序的对象?

Object { distance=3388, duration="6 mins", from="Lenchen Ave, Centurion 0046, South Africa", more...}

Object { distance=13564, duration="12 mins", from="Lenchen Ave, Centurion 0046, South Africa", more...}

Object { distance=4046, duration="6 mins", from="Lenchen Ave, Centurion 0046, South Africa", more...}

Object { distance=11970, duration="17 mins", from="Lenchen Ave, Centurion 0046, South Africa", more...}
6个回答

使用Array.prototype.sort(),例如

myArray.sort((a, b) => a.distance - b.distance)

sort()方法接受一个比较器函数。这个函数接受两个参数(都可能是相同类型的),它的工作是确定两个参数中的哪一个先出现。

它通过返回一个整数来做到这一点

  • 负数(小于零):第一个参数在前
  • 正数(大于零):第二个参数在前
  • 零:参数被认为是相等的排序

当您处理数值时,最简单的解决方案是从第一个值中减去第二个值,这将产生升序结果。

这是一个带有已接受答案的示例:

 a = [{name:"alex"},{name:"clex"},{name:"blex"}];

升序:

a.sort((a,b)=> (a.name > b.name ? 1 : -1))

输出 : [{name: "alex"}, {name: "blex"},{name: "clex"} ]

递减:

a.sort((a,b)=> (a.name < b.name ? 1 : -1))

输出 : [{name: "clex"}, {name: "blex"}, {name: "alex"}]

这与当前的最佳答案相同,但在 ES6 单行中:

myArray.sort((a, b) => a.distance - b.distance);

这对我有用

var files=data.Contents;
          files = files.sort(function(a,b){
        return a.LastModified - b. LastModified;
      });

或使用 Lodash 对数组进行排序

files = _.orderBy(files,'LastModified','asc');

与已经给出的答案没有什么不同,但更通用的是:

sortArrayOfObjects = (arr, key) => {
    return arr.sort((a, b) => {
        return a[key] - b[key];
    });
};

sortArrayOfObjects(yourArray, "distance");
可以用单行返回语句编写: sortArrayOfObjects = (arr, key) => { return arr.sort((a, b) => a[key] - b[key]); };
2021-03-23 08:43:15