- 将数组中相同数据归并成对象型
示例:
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);
- 统计字符串中的每个字符的数量
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
}
以后会不断增加常用的处理方法…