前端常用的数据处理(基础版)
1、字符串、数组互转
1 2 3 4 5 | //字符串转数组 let str = '一公司,二公司,三公司' ; console.log(str.split( ',' )); //['一公司,二公司,三公司'] // console.log(Array.from(str)); // console.log([...str]); |
1 2 3 4 | //数组转字符串 let strArr = [ '一公司' , '二公司' , '三公司' ]; console.log(strArr.join()); //一公司,二公司,三公司 // console.log(strArr.toString()); |
2、数组、对象互转
1 2 3 4 5 6 7 8 9 10 11 | //数组转对象 const arr = [ { label: '男' , value: 0 }, { label: '女' , value: 1 } ]; const arrObj = {}; for ( let i = 0; i < arr.length; i++) { arrObj[arr[i].value] = arr[i].label; } console.log(arrObj); //{0: '男', 1: '女'} |
1 2 3 4 5 6 7 | //对象转数组 const obj = { 0: '男' , 1: '女' }; let objArr = []; for ( let key in obj) { objArr.push({ label: obj[key], value: +key }) } console.log(objArr); |
3、数组合并、对象合并
1 2 3 4 5 | //数组合并 let m1 = [ 'js' , 'es' , 'ts' ], m2 = [ 'vue' , 'react' ]; let mergeM = m1.concat(m2); console.log(mergeM); //['js', 'es', 'ts', 'vue', 'react'] |
1 2 3 4 5 | //对象合并 let o1 = { a: 1, b: 2 }, o2 = { c: 3, d: 4 }; let mergeO = Object.assign(o1, o2); console.log(mergeO); //{a: 1, b: 2, c: 3, d: 4} |
4、判断是否是空数组、空对象
1 2 3 4 5 6 7 8 | //判断是否是空数组 let a1 = [], a2 = [1,2,3]; function isArray(arr) { if (arr instanceof Array && arr.length === 0) return true ; return false ; } console.log(isArray(a1)); //true console.log(isArray(a2)); //false |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | //判断是否是空对象-利用hasOwnProperty let u1 = {}, u2 = { p:9 }; function isObject(obj) { for ( let key in obj) { //如果有key属性代表不是一个空对象,返回false if (obj.hasOwnProperty(key)) return false ; } return true ; } console.log(isObject(u1)); //true console.log(isObject(u2)); //false //判断是否是空对象-利用Object.keys function isObject2(obj) { if (Object.keys(obj).length === 0) return true ; return false ; } console.log(isObject2(u1)); //true console.log(isObject2(u2)); //false |
5、将时间戳转成日期格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function getExactTime(time) { //时间戳为10位需*1000,时间戳为13位的话不需乘1000 // var date = new Date(time); var date = new Date(time * 1000); var year = date.getFullYear() + '年' ; var month = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '月' ; var day = date.getHours() + '日' ; var hour = date.getDate() + '时' ; var min = date.getMinutes() + '分' ; var second = date.getSeconds() + '秒' ; return year + month + day + hour + min + second; } console.log(getExactTime(1651373079)); //2022年05月10日1时44分39秒 |
6、数组去重
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | //第一种 let fiveNumber = [1,2,3,3,2,1,1,2,3,4,5,6,7]; function unique1(fiveNumber) { let s = new Set(fiveNumber); return Array.from(s); } function unique2(fiveNumber){ return fiveNumber.reduce((pre, cur) => { return pre.includes(cur) ? pre : pre.concat(cur); }, []) } console.log(unique1(fiveNumber)); console.log(unique2(fiveNumber)); //[1, 2, 3, 4, 5, 6, 7] //第二种 const jordan = [ { goodsId: '1' , user: 'jack' , uniId: 20 }, { goodsId: '2' , user: 'tom' , uniId: 20 }, { goodsId: '1' , user: 'jack' , uniId: 20 }, { goodsId: '3' , user: 'rose' , uniId: 20 }, { goodsId: '1' , user: 'jack' , uniId: 20 }, ] function uniqueJordan(jordan) { let obj = {}; return jordan.reduce((pre, cur) => { obj[cur.goodsId] ? '' : obj[cur.goodsId] = true && pre.push(cur); return pre; }, []) } console.log(uniqueJordan(jordan)) |
7、数组扁平化
1 2 3 4 5 6 7 8 | let six = [1, [2, [3, 4]],[5,6],[7]]; function flatten(six) { return six.reduce((pre, cur) => { return pre.concat(Array.isArray(cur) ? flatten(cur) : cur); }, []) } console.log(flatten(six)); //[1, 2, 3, 4, 5, 6, 7] |
8、数字千分位格式化
1 2 3 4 5 6 7 8 | let n = '1234567' ; function formatNum(n) { return n.split( '' ).reverse().reduce((cur, next, index) => { //看index是否能被3整除 return ((index % 3) ? next : (next + ',' )) + cur }) } console.log(formatNum(n)); //1,234,567 |
9、url参数转对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | let query = 'http://www.bd.com/?user=rose&id=123&pid=01&city=beijing' ; function getQueryParams(query) { /* ?user=rose&id=123&pid=01&city=beijing [?&] 带有?和&的 [^?&]+= 非问号&号的(多个)和等号 */ const result = {}; const reg = /[?&][^?&]+=[^?&]+/g; const found = query.match(reg); if (found) { found.forEach(item => { let temp = item.substring(1).split( '=' ); console.log(temp, 'LOG' ) let key = temp[0], val = temp[1]; result[key] = val; }) } return result; } console.log(getQueryParams(query)); //{user: 'rose', id: '123', pid: '01', city: 'beijing'} |
10、一维数组转树形结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | let data = [ { id: 1, parent: null , text: '菜单1' }, { id: 11, parent: 1, text: '菜单1-1' }, { id: 12, parent: 1, text: '菜单1-2' }, { id: 2, parent: null , text: '菜单2' }, { id: 21, parent: 2, text: '菜单2-1' }, { id: 22, parent: 2, text: '菜单2-2' } ] function jsonTree(data, p, list) { for ( let item of data) { if (item.parent == p) list.push(item); } console.log(list, '-----' ) for ( let i of list) { i.children = []; //递归 jsonTree(data, i.id, i.children); if (i.children.length == 0) delete i.children; } return list; } //调用的三个参数分别为源数据、父级节点的标识、默认[] //jsonTree(data, null, []); console.log(jsonTree(data, null , [])); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!