sort()方法妙用 DOM 排序
DOM 排序
DOM结构:
javascript:
var rows = document.getElementsByTagName("tbody")[0].getElementsByTagName("tr"); // 获取元素 var arr = []; for(var i=0;i<rows.length;i++){ arr.push(rows[i]) // 把 DOM 对象集合推到一个数组里,才能用 sort() 方法 } arr.sort(function(a1,a2){ // 用 sort() 方法给带有 DOM 元素的数组排序 var a1Value = parseInt(a1.children[2].innerHTML); var a2Value = parseInt(a2.children[2].innerHTML); return a1Value - a2Value; }); var table = document.getElementsByTagName("table")[0].getElementsByTagName("tbody")[0]; arr.forEach(function(n){ table.appendChild(n) }); // 重新渲染到页面,完成排序
运行上面的代码后,即完成表格按价格从低到高排序,本编辑器貌似不支持上传第二张图,就不上图了
sort() 方法
var arr1 = [1,2]; // 定义一个简单的数组 arr1.sort(function(){ return 5565; // 返回 0.1,10,555等任何正数都是一样的 }); console.log(arr1); // 不会改变顺序 arr1.sort(function(){ return 5565; // 返回 0.1,10,555等任何正数都是一样的 }); console.log(arr1); // 改变了顺序 // 小结,返回一个负数和 0 时,就会改变原有的顺序,返回一个正数时,不会改变顺序 arr1.sort(function(a1,a2){ return a1-a2 // a1-a2 > 0 数组中的数不会被改变顺序,console.log(arr1) 会输出 1 2 }); arr1 = [2,1]; arr1.sort(function(a1,a2){ return a1-a2 // 返回值是大于零还是小于 0 ?console.log(arr1) 会输出什么? }); console.log(arr1); // 输出的是 [1,2] arr1.sort(function(a1,a2){ return a2-a1 // 返回值是大于零还是小于 0 ?console.log(arr1) 会输出什么? }); console.log(arr1); // 输出的是 [2,1] // 用参数中的第一个数减去第二个数,返回的数组就会是从小到大,升序排列 // 用参数中的第二个数减去第一个数,返回的数组就会是从大到小,降序排列 arr1 = [2,1]; arr1.sort(function(){ return Math.random()-0.5 // 返回的值 = [0 ~ 1] - 0.5 = [(-0.5) ~ 0.5] }); console.log(arr1); // 我们永远都不会知道是是会输出 [1,2],还是 [2,1]
总结
在 DOM 或需要排序的数据利用 sort 进行排序时,可以编写更复杂的对比函数,按需要返回正数或负数或0,进尔改变数据元素的排序。