在最近做项目中 发现一个很重要的事,前端更多的是和后端接口打交道,如何把数据处理好了之后,按照相应的功能渲染到页面上,于是如何更好更快更准确的用js处理好数据就为其重要。
因此,写下这篇博客,不仅是为了让大家受益,也是为了自己以后方便查阅,巩固基础。
进入正题:
一、json字符串与js对象之间的转换:
1. json字符串转js对象
eg:var jsonStr = '{"name":"xiao","age":12}' ;
console.log(JSON.parse(jsonStr ));
2.js对象转json字符串
eg:var jsonObj = {"name":"xiao","age":12};
console.log(JSON.stringify(jsonObj ))
二、for-in遍历json:
eg:var json = [ {"name":"第1条"}, {"name":"第2条"}, {"name":"第3条"}]
for(let i in json){console.log( json[i].name );}
三、for-in遍历多层json:
eg:var userArray = [ { "UserID": 11, "Name": { "FirstName": "Truly", "LastName": "Zhu" },"Email": "" }, { "UserID": 12, "Name": { "FirstName": "Jeffrey", "LastName": "Richter" }, "Email": "" }, { "UserID": 13, "Name": { "FirstName": "Scott", "LastName": "Gu" }, "Email": "" }];
for(let i in userArray) //首先循环第一层json{
for(let j in userArray[i]){ //循环第一层json中的值console.log( userArray[i][j] ) //打印循环出来的json值,每个值都会被循环出来,包括第二层json
for( let k in userArray[i][j] ){
console.log( userArray[i][j][k] ) //打印循环出来的第二层json值
}
}
}
四、匹配id:
eg:let arr1 = ['aaa','bbb','ccc','ddd'];
let arr2 = [ {id:'aaa',name:'苹果1'}, {id:'bbb',name:'苹果2'}, {id:'ccc',name:'苹果3'}, {id:'ddd',name:'苹果4'}, {id:'eee',name:'苹果5'} ];
for (let i in arr2){
for(let k in arr1){
if(i == k){
let str = [];
str.push(i);
console.log(str)
}
}
}
五、将数组下标设置为1:
var json = [ {"name":"第1条"}, {"name":"第2条"}, {"name":"第3条"}] ;
for(let i in json){
console.log( Number(i)+1 );
}
六、取数组中的最大值:
var jsonMax = [ {id:'aaa',cjnum:'70'}, {id:'bbb',cjnum : '20'}, {id:'ccc',cjnum:'45'}, {id:'ddd',cjnum: '80'}, {id:'eee',cjnum:'55'} ]
let data = jsonMax;
let numberMax = 0;
for(let i = 0 ; i<jsonMax.length;i++){
if(parseFloat (jsonMax[i].cjnum)>numberMax ){//如果70大于0就进入,将70赋值给numberMax,此时,numberMax为70,循环继续,80大于70,满足条件,进来,此时,numberMax由原来的70变成了80。
numberMax = parseFloat (jsonMax[i].cjnum) ;
}
}
console.log( numberMax )
2、用es6取最大值
let max_item = [];
let max_arr = [{age:9,"name":'ma'},{age:13,'name':'rong'}];
for(let j in max_arr){
max_item.push(max_arr[j].age)
} console.log(Math.max(...max_item))
七、改变json中key的名字
var json = [{
a: 1,
b: '张三',
c: '13000000000',
},
{
a: 2,
b: '李四',
c: '13100000000'
}
]
for (var i = 0; i < json.length; i++) {
json[i].id = json[i].a;
json[i].name = json[i].b;
json[i].tel = json[i].c;
delete json[i].a
delete json[i].b
delete json[i].c
}
console.log(json)
八、日期排序
var data = {
"rows": [{ "name": "张三", "time": "2011/4/1 0:00:00", },
{ "name": "李四", "time": "2015/5/6 12:30:00", },
{ "name": "王五", "time": "2012/10/1 22:10:00", },
{ "name": "赵六", "time": "2011/9/1 22:10:00", }]};
var rows = data.rows;rows.sort(function(a,b){
return Date.parse(a.time) - Date.parse(b.time);//时间正序});
for(var i =0,l=rows.length;i<l;i++){
console.log(rows[i].name + " | " + rows[i].time);
}