xms-basic-util
Version:
js基础工具类集合,集成方便后期调用,通过webpack编译,支持多种平台,如es6、node、浏览器引入等 ## 使用 ### es6方法 - 安装 ``` npm install xms-basic-util ``` - 导入 ``` import xmsBasicUtil from 'xms-basic-util' //日期转换工具对象 const dateFormat = xmsBasicUtil.dateFormat; //数字处理工具对象 const mathUtil = xmsBasicUt
81 lines (75 loc) • 2.29 kB
JavaScript
/**
* 冒泡排序
* 依次 比较 相邻的两个数,正序则不动,倒序则交换位置
* 如此循环,直到整个数组为有序为止
* @param arr
* @returns {*}
*/
function bubbleSort(arr) {
let len = arr.length;
for (let i = 0; i < len; i++) {
for (let j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j+1]) { //相邻元素两两对比
let temp = arr[j+1]; //元素交换
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
/**
* 排序方法、只支持升序
* @param item1
* @param item2
* @param propArray 排序属性数组
* @returns {boolean|*}
*/
function ascSort(item1, item2, propArray) {
let compareArray = []
for (let i = 0; i < propArray.length; i++) {
let prop = propArray[i]
if (item1[prop] > item2[prop]) {
compareArray.push(1);
break;
} else if (item1[prop] === item2[prop]) {
compareArray.push(0);
} else {
compareArray.push(-1);
break;
}
}
for (let j = 0; j < compareArray.length; j++) {
if (compareArray[j] === 1 || compareArray[j] === -1) {
return compareArray[j];
}
}
return false;
}
/**
* sort extensions by "firstName" + "lastName" + "ext" ASC
* @param extensions
*/
function sortObjectByProp(objectArray){
let sortProp = ['firstName', 'lastName', 'ext']
objectArray.sort((a, b) => {
return ascSort(a, b, sortProp)
})
return objectArray
}
export default {
bubbleSort,
sortObjectByProp
}
const extensions = [
{firstName: 'a', lastName: 'pn', ext: 33, extType: 'DigitalUser'},
{firstName: 'b', lastName: 'pn', ext: 32, extType: 'DigitalUser'},
{firstName: 'a', lastName: 'pn', ext: 50, extType: 'AO'},
{firstName: 'a', lastName: 'ab', ext: '123', extType: 'AO'},
{firstName: 'b', lastName: 'pn', ext: 40, extType: 'Dept'},
{firstName: 'b', lastName: '', ext: '34', extType: 'AO'},
{firstName: 'b', lastName: 'nb', ext: '', extType: 'VirtualUser'},
{firstName: 'en', lastName: 'ww', ext: 32, extType: 'FaxUser'}
];
// 名称排序
console.log('sortExtensionsByName:%o', sortObjectByProp(extensions))