javascript - 使用 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 和零?
解决方案
你是在问为什么这样有效?
如果是这样,它会起作用,因为 JavaScript 对字典顺序有一定的了解。B 在 S 之前,S 在 V 之前,依此类推。
-1 表示变量 a 应该比变量 b 移动一个索引。
1 表示变量 a 应该比变量 b 移动一个索引。
0 表示不应移动变量 a。
推荐阅读
- android - 如何在 MoPub 中集成 Chartboost 中介?
- nginx - GRPC 流在写入之前关闭(通过 nginx 的 grpc_pass)
- reactjs - 如何描述何时在反应中使用术语“方法”与“功能”?
- python - 无法获取超链接href美汤
- flutter - 在 Flutter 的 SliverAppBar 中添加 AppBar
- git - 如果通过 --depth=1 克隆存储库,如何获取存储库的 git 历史记录
- c++ - 程序中的内存泄漏以在 C++ 中实现链表
- python - 如何在一定区间内绘制相同宽度不同高度的bin的直方图?
- node.js - Firebase 部署 | 您需要启用 JavaScript 才能运行此应用程序。| “npm start”有效,但“firebase serve”无效
- node.js - 从反应上传图像文件到nodejs