有人能简单解释一下吗?我对此部分感到困惑:cars.sort(function(a, b){return a.year - b.year});
这是我的代码。什么是a,b
,为什么我们使用a.year,b.year
?
<button onclick="myFunction()">Sort</button>
<p id="demo"></p>
<script>
var cars = [
{type:"Volvo", year:2016},
{type:"Saab", year:2001},
{type:"BMW", year:2010}]
displayCars();
function myFunction() {
cars.sort(function(a, b)
{return a.year - b.year}
);
displayCars();
}
function displayCars() {
document.getElementById("demo").innerHTML =
cars[0].type + " " + cars[0].year + "<br>" +
cars[1].type + " " + cars[1].year + "<br>" +
cars[2].type + " " + cars[2].year;
}
</script>
答案 0 :(得分:0)
function(a,b){return a.year-b.year}
是比较函数的一部分,它返回负值和零值,用于排序。
从MDN检查此说明
的链接答案 1 :(得分:0)
您正在使用与数组相关的sort
函数。
具体到你的问题, 汽车是一系列物体。 a和b是阵列车中的两个元素。
function myFunction() {
cars.sort(function(a, b) // take in 2 elements from the array
// a = {type:"Volvo", year:2016}
// b = {type:"Saab", year:2001},
{return a.year - b.year} // a-b is for ascending order
// return 2016 - 2001
);
displayCars();
}
答案 2 :(得分:0)
sort函数接受比较函数作为参数。
对于集合中的元素对调用比较,并且需要根据您尝试实现的顺序返回更大。在这种情况下,这是一年。
如果要将第一个元素视为更大,则比较函数的结果需要为>= 0
,否则为< 0
。
答案 3 :(得分:0)
array.prototype.sor 需要一个回调函数作为参数。当sort方法对数组进行排序时,它会多次调用回调并将数组中需要比较的两个对象传递给它。这两个对象在这里是a和b。 array.prototype.sort 方法要求回调返回正数,负数1或零,具体取决于a和b所需的顺序。在这里,排序回调按年比较两辆车,所以要返回负数/正数或零,最简单的方法是返回 a.year - b.year 。