首页 > 解决方案 > 使用 JavaScript 对对象数组进行排序

问题描述

我有一个数组:

    var cars = [
    {type:"Volvo", year:2016},
    {type:"Saab", year:2001},
    {type:"BMW", year:2010}]

我想使用此代码对汽车对象进行类型排序

    function myFunction() {
       cars.sort(function(a, b){
           var x = a.type.toLowerCase();
           var y = b.type.toLowerCase();
           if (x < y) {return -1;}
           if (x > y) {return 1;}
           return 0;
       });
       displayCars(); // a function to output the result 
    }

此函数中的 x 和 y 是 saab、bww 或 volvo。怎么可能比较(萨博<宝马)。我的意思是它们不是要比较的数字并返回另一个数字。

if 条件语句如何比较两个字符串而不是比较数字?为什么它必须返回 -1、1 和零?

标签: javascriptarrayssorting

解决方案


你是在问为什么这样有效?

如果是这样,它会起作用,因为 JavaScript 对字典顺序有一定的了解。B 在 S 之前,S 在 V 之前,依此类推。

-1 表示变量 a 应该比变量 b 移动一个索引。

1 表示变量 a 应该比变量 b 移动一个索引。

0 表示不应移动变量 a。


推荐阅读