js常用函数总结
1、模糊搜索
export const fuzzyQuery = (list, keyWord, attribute = 'name') => {const reg = new RegExp(keyWord)const arr = []for (let i = 0; i < list.length; i++) {if (reg.test(list[i][attribute])) {arr.push(list[i])}}return arr
}
list 原数组
keyWord 查询的关键词
attribute 数组需要检索属性
2、遍历树节点
export const foreachTree = (data, callback, childrenName = 'children') => {for (let i = 0; i < data.length; i++) {callback(data[i])if (data[i][childrenName] && data[i][childrenName].length > 0) {foreachTree(data[i][childrenName], callback, childrenName)}}
}
const treeData = [{id: 1,label: '一级 1',children: [{id: 4,label: '二级 1-1',children: [{id: 9,label: '三级 1-1-1'}, {id: 10,label: '三级 1-1-2'}]}]}],let result
foreachTree(data, (item) => {if (item.id === 9) {result = item}
})
console.log('result', result) // {id: 9,label: "三级 1-1-1"}
3、数组对象根据字段去重
export const uniqueArrayObject = (arr = [], key = 'id') => {if (arr.length === 0) returnlet list = []const map = {}arr.forEach((item) => {if (!map[item[key]]) {map[item[key]] = item}})list = Object.values(map)return list
}
arr 要去重的数组
key 根据去重的字段名
4、解析URL参数
export const getSearchParams = () => {const searchPar = new URLSearchParams(window.location.search)const paramsObj = {}for (const [key, value] of searchPar.entries()) {paramsObj[key] = value}return paramsObj
}
5、判断Andoird还是IOS
export const getOSType=() => {let u = navigator.userAgent, app = navigator.appVersion;let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1;let isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);if (isIOS) {return 'IOS';}if (isAndroid) {return 'Andoird';}return '其他';
}
6、随机获取眼色值
function getRandomColor(){return `#${Math.floor(Math.random() * 0xffffff) .toString(16)}`;
}
7、随机打乱数组
function shuffle(arr) {for (let i = arr.length - 1; i > 0; i--) {const randomIndex = Math.floor(Math.random() * (i + 1));[arr[i], arr[randomIndex]] = [arr[randomIndex], arr[i]]}return arr
}