Javascript 试图理解.sort在这个问题的背景下是如何工作的
所以我有一个数组,里面有一堆关于汽车的信息,我应该按照汽车型号进行排序Javascript 试图理解.sort在这个问题的背景下是如何工作的,javascript,arrays,Javascript,Arrays,所以我有一个数组,里面有一堆关于汽车的信息,我应该按照汽车型号进行排序 var inventory = [ { id: 1, car_make: "Lincoln", car_model: "Navigator", car_year: 2009 }, { id: 2, car_make: "Mazda", car_model: "Miata MX-5", car_year: 2001 }, { id: 3, car_make: "Land Rover", car_model: "De
var inventory = [
{ id: 1, car_make: "Lincoln", car_model: "Navigator", car_year: 2009 },
{ id: 2, car_make: "Mazda", car_model: "Miata MX-5", car_year: 2001 },
{ id: 3, car_make: "Land Rover", car_model: "Defender Ice Edition", car_year: 2010 },
{ id: 4, car_make: "Honda", car_model: "Accord", car_year: 1983 }
这就是决心解决它的解决方案
function sortCarInventory(inventory) {
return inventory.sort((a,b) => (a.car_model > b.car_model ? 1 : -1));
}
我得到它调用数组并通过它进行解析以对它们进行排序,它使用的参数是“a,b”
我不知道这些参数从哪里开始传递。此外,当它说“a.car_model”时,这是点符号吗?最后,为什么使用赋值为1或-1的条件运算符可以在这里进行排序
编辑我阅读了MDN文档,但仍然不理解为什么这样做有效,因此提出了这个问题 需要了解的最重要的事情是,您正在将函数作为参数传递。 您也可以这样写,以显示实际传递给.sort的内容(我还以更具描述性的版本编写了它,以便即使对于初学者也能看到那里发生了什么) 这意味着.sort需要一个参数,该参数是function。您不是执行此函数的人,是.sort方法执行的。因此,是.sort方法填充参数
a、b
要正常工作,您提供的函数需要处理两个参数,如果第一个参数较大,则需要返回1
,如果第二个参数较大,则需要返回-1
。(如果相等,还应返回0,这在作为解析器提供的代码中是可以改进的)
调用此函数的.sort对您来说是黑盒
注意:javascript语言允许对字符串使用
,它根据字典值返回true/false。排序的详细信息可以通过简单的搜索引擎搜索找到<代码>排序()必须对元素进行相互比较,以确定哪个元素比另一个元素“大”。给它的两个参数是它必须比较的每个元素。你给它一个回调来定义如何比较它们。我想如果你所有的问题都会得到回答;由于此逻辑正在进行字符串比较,因此它应该看起来像(a,b)=>a.car\u model.localeCompare(b.car\u model))
这是否回答了您的问题?“要正常工作,您提供的函数需要处理两个参数,如果第一个参数较大,则需要返回1;如果第二个参数较大,则需要返回-1。”如果两个参数相等,则还需要返回0
。如果不这样做,在某些情况下可能会得到不一致的结果。案例将取决于环境和正在排序的数组。
inventory.sort(compareStrings);
function compareStrings(a, b) {
if (a.car_model > b.car_model) {
return 1;
} else {
return -1;
}
}