微信小程序之数组对象排序【冒泡排序】 - yuzhouxiaogegit/blog GitHub Wiki
微信小程序之数组对象排序【冒泡排序】
微信小程序之数组对象排序【冒泡排序】原理:
【原理】前后两个数两两进行比较,如果符合交换条件,交换位置。直到所有数据排序完成,结束比较。
【示例1】数组排序
/*
函数名:_sortArr
功能:通过数组中值排序,正向排序,反向排序,采用冒泡排序
参数1:tempArr 传入数组
参数2:传入排序方式,1 从小到大排序 ,-1 从大到小排序 ,其他值则不进行排序
*/
function _sortArr(tempArr = [], sort_order = 1) {
var tempArr = JSON.parse(JSON.stringify(tempArr)); // 深赋值一份,保证原来的数组不被改变
var tempArrLength = tempArr.length;
for (var i = 0; i < tempArrLength; i++) {// 比较次数
// 每轮比较次数
for (var j = 0; j < tempArrLength - i - 1; j++) {
// 判断两个值是否符合交换条件
if (sort_order == 1) { //排序从小到大
if (tempArr[j] > tempArr[j + 1]) {
var temp = tempArr[j + 1];
tempArr[j + 1] = tempArr[j];
tempArr[j] = temp;
}
} else if (sort_order == -1) { // 排序从大到小
if (tempArr[j] < tempArr[j + 1]) {
var temp = tempArr[j + 1];
tempArr[j + 1] = tempArr[j];
tempArr[j] = temp;
}
} else { // 不排序
return tempArr;
}
}
}
return tempArr;
}
// _sortArr 方法调用示例
var tempArr = [1, 8, 96, 66666, 2, 3, 5, 68, 567, 888888];
console.log(_sortArr(tempArr,1)); //从小到大排序
console.log(_sortArr(tempArr, -1)); //从大到小排序
console.log(tempArr); // 原始数组
【示例2】:通过数组对象中id进行排序
/*
函数名:_sortObj
功能:通过数组中下面的对象排序,正向排序,反向排序,采用冒泡排序
参数1:tempArr 传入数组对象
参数2:传入排序方式,1 从小到大排序 ,-1 从大到小排序 ,其他值则不进行排序
参数3:排序的key值
*/
function _sortObj(tempArr = [], sort_order = 1, key) {
var tempArr = JSON.parse(JSON.stringify(tempArr)); // 深赋值一份,保证原来的数组对象不被改变
var tempArrLength = tempArr.length;
for (var i = 0; i < tempArrLength; i++) {// 比较次数
// 每轮比较次数
for (var j = 0; j < tempArrLength - i - 1; j++) {
// 判断两个值是否符合交换条件
if (sort_order == 1) { //排序从小到大
if (tempArr[j][key] > tempArr[j + 1][key]) {
var temp = tempArr[j + 1];
tempArr[j + 1] = tempArr[j];
tempArr[j] = temp;
}
} else if (sort_order == -1) { // 排序从大到小
if (tempArr[j][key] < tempArr[j + 1][key]) {
var temp = tempArr[j + 1];
tempArr[j + 1] = tempArr[j];
tempArr[j] = temp;
}
} else { // 不排序
return tempArr;
}
}
}
return tempArr;
}
// _sortObj 方法调用示例
var tempArrObj = [{ id: 265, name: '张山' }, { id: 0, name: '李四' }, { id: 2, name: '王武' }, { id: 3, name: '赵四' }, { id: 5, name: "刘建" }, { id: 9999, name: '万龙' }];
console.log(_sortObj(tempArrObj, 1, 'id')); //从小到大排序
console.log(_sortObj(tempArrObj, -1, 'id')); //从大到小排序
console.log(tempArrObj); // 原始数组对象