• 前端常用的数据处理(基础版)


    1、字符串、数组互转

    //字符串转数组
    let str = '一公司,二公司,三公司';
    console.log(str.split(',')); //['一公司,二公司,三公司']
    // console.log(Array.from(str));
    // console.log([...str]);
    

      

    //数组转字符串
    let strArr = ['一公司','二公司','三公司'];
    console.log(strArr.join());//一公司,二公司,三公司
    // console.log(strArr.toString());
    

      

    2、数组、对象互转

    //数组转对象
    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: '女'}
    

      

    //对象转数组
    const obj = { 0: '男', 1: '女' };
    let objArr = [];
    for (let key in obj) {
       objArr.push({ label: obj[key], value: +key })
    }
    console.log(objArr);
    

      

    3、数组合并、对象合并

    //数组合并
    let m1 = ['js', 'es', 'ts'], m2 = ['vue','react'];
    let mergeM = m1.concat(m2);
    console.log(mergeM);
    //['js', 'es', 'ts', 'vue', 'react']
    

      

    //对象合并
    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、判断是否是空数组、空对象

    //判断是否是空数组
    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
    

      

    //判断是否是空对象-利用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、将时间戳转成日期格式

    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、数组去重

    //第一种
    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、数组扁平化

    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、数字千分位格式化

    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参数转对象

    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、一维数组转树形结构

    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, []));
    

     

  • 相关阅读:
    JSP——MVC模式+Servlet生命周期
    国际版多时区设计方案【转】
    创业互联网公司如何搭建自己的技术框架[转-2016]
    80后理财问题指南
    Xshell的常用命令
    了解ASP.NET Core 依赖注入,看这篇就够了 于2017年11月6日由jesseliu发布
    Http请求中Content-Type讲解以及在Spring MVC中的应用
    js模拟键盘事件
    js 模拟鼠标事件
    特殊字符处理 (生成正则时)
  • 原文地址:https://www.cnblogs.com/theblogs/p/16216094.html
Copyright © 2020-2023  润新知