思路:使用sort方法对数组按照指定顺序排序并得到一个排序后的数组arr,再使用forEach方法遍历数组arr,并将其元素中的name取出来放入li标签中,再将ul.innerHTML更新为str。
<script>
var cups = [
{ type: 1, price: 100, color: 'black', sales: 3000, name: '牛客logo马克杯' },
{ type: 2, price: 40, color: 'blue', sales: 1000, name: '无盖星空杯' },
{ type: 4, price: 60, color: 'green', sales: 200, name: '老式茶杯' },
{ type: 3, price: 50, color: 'green', sales: 600, name: '欧式印花杯' }
]
var ul = document.querySelector('ul');
var upbtn = document.querySelector('.up');
var downbtn = document.querySelector('.down');
function render(arr)
{
var str=""
//element表示数组元素
arr.forEach(element=>{
str+=`<li>${element.name}</li>`
})
ul.innerHTML=str
}
upbtn.onclick=function(){
//升序
var uparr=cups.sort(function(a,b){
return a.sales-b.sales
})
render(uparr)
}
downbtn.onclick=function(){
//降序
var downarr=cups.sort(function(a,b){
return b.sales-a.sales
})
render(downarr)
}
</script>
总结:sort方法对数组排序,其参数是一个回调函数,回调函数接受两个参数a和b,如果希望a排在b前面则返回一个负数,如果希望a排在b后面则返回一个正数,如果a和b相等则返回0。即数组.sort()返回排序后的数组;数组.sort(function(a,b){return a-b})升序,因为如果a比b小则返回负数,即a在b前,如果a比b大则返回正数,即a在b后,这样就是升序排列;数组.sort(function(a,b){return b-a})降序,因为如果a比b小则返回正数,即a在b后,如果a比b大则返回负数,即a在b前,这样就是降序排列。arr.forEach(function(currentValue, index, array){})方法遍历数组,这三个参数是固定的,但是可以省略部分参数,currentValue表示当前正在处理的元素值,index表示当前正在处理的元素下标,array表示当前正在处理的数组。



京公网安备 11010502036488号