前端数据处理的一些常见操作

  1. 将数组中相同数据归并成对象型
    示例:
var arr = [{ name: "HTML",age:18}, { name: "PYTHON" }, { name: "HTML",age:19 }, { name: "UI" }, { name: "HTML",age:20 }, { name: "UI" }];
//更改后
{
'HTML': (3) [{ name: "HTML5",age:18 }, { name: "HTML5",age:19 }, { name: "HTML5",age:20 }]
'PYTHON': [{ name: "PYTHON" }]
'UI': (2) [{ name: "UI" },{ name: "UI" }]
}
var json={};
for(var i in data){
    var node=data[i];
    if(json[node.name]){
        json[node.name].push(node);
    }else {
        json[node.name]=[node];
    }
}
console.log(json);
  1. 统计字符串中的每个字符的数量
var str = "aaaabbbsdasdbadwqasdwqdasdas";
//结果
a: 9
b: 4
d: 6
q: 2
s: 5
w: 2

//代码如下
function sumStr(str){
    var arr = str.split("");
    var arr1 = Array.from(new Set(arr));
    var obj = {};
    arr1.forEach(item=>{
        obj[item] = 0;
        arr.forEach(el=>{
            if(el == item){
                obj[item] += 1;
            }
        })
    })
    return obj;
}

2、递归冻结对象
普通的对象冻结
在这里插入图片描述

单层的对象可以正常冻结,无法更改对象,但是当对象为多层是就会出现更改内部数据的情况
为解决上面出现问题,我们可以编写下面的函数实现彻底冻结

function constantize (obj) {
    function constantizes (obj) {
        Object.freeze(obj)
        Object.keys(obj).forEach(el => {
            if (typeof obj[el] === 'object')
              constantizes(obj[el])  
        })
    }
    constantizes(obj)
    return obj
}

以后会不断增加常用的处理方法…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值