一、首先定义一个json对象如下:
var student = [
{name:"an",age:12},
{name:"bn",age:13},
{name:"cn",age:14},
{name:"dn",age:15}
];
var a = [
{name:"tina",age:14},
{name:"timo",age:15},
{name:"lily",age:16},
{name:"lucy",age:16}
];
var b = [
{name:"aaa",age:8},
{name:"bbb",age:9},
{name:"lily",age:16},
{name:"lucy",age:16}
];
二、处理方法:
1、向其中的一个json数据加入一个对象,使用push()方法,我以数组student为例子:
student.push({name:"en",age:16});
console.log(JSON.stringify(student));//输出查看结果
2、向其中的一个json数据删除一个对象,使用splice()方法,我以数组student为例子:
//删除 name 等于 an 的对象
//1. 首先我们要得到这个对象
var filter = persons.filter((item) => {
return item.name == "an";
});
//2. 其次得到这个对象在数组中对应的索引
var index = student.indexOf(filter[0]);
//3. 如果存在则将其删除,index > -1 代表存在
index > -1 && student.splice(index, 1);
//打印结果:
console.log(JSON.stringify(student));
//[{name:"bn",age:13},{name:"cn",age:14},{name:"dn",age:15}]
3、 向其中的一个json数据修改一个对象值,我以数组student为例子:
//将 name 等于 an 的 age 修改为 60
//1. 得到 an 对象
var an = student.filter((item) => {
return item.name == "an";
});
//2. 修改age
an[0].age = 60;
//输出结果
console.log(JSON.stringify(an));
4、合并json对象,使用concat(),我以a,b为例 ,当然也可以不使用新对象储存,直接放到原对象就行
//定义一个新对象
var c=[];
//合并
c=a.concat(b);
那么这个时候如何去重呢,如下:
//用于name判断重复
var temp = {};
//去重后组成的新数组
var result = [];
//对合并数组c进行去重处理
c.map(function (item, index) {
if(!temp[item.name]){
result.push(item);
temp[item.name] = true;
}
});
//输出不重复的name的result对象
console.log(JSON.stringify(result));
5、看到以上的一些filter()用法,可能有部分人不太了解filter()的用法,它用于筛选对象,我下面写一个列子帮助大家了解:
//定义一个json对象
var json=[
{id:1,name:"aaa",age:18},
{id:2,name:"bbb",age:20},
{id:3,name:"ccc",age:50}},
{id:4,name:"ddd",age:60}},
];
//我想筛选出age大于20的人
var news = json.filter(function(item, index, array){
return item.age > 20;
});
//这时候就会输出id为3和4的数据
console.log(JSON.stringify(news));
看到这,大家就会有疑问了,如果我想直接筛选出json对象是否在某个数组里用如何使用,其实原理也是差不多的,如:
//这是一个json对象
var json2=[
{id:1,name:"aaa",age:18},
{id:2,name:"bbb",age:20},
{id:3,name:"ccc",age:50}},
{id:4,name:"ddd",age:60}},
];
//我想筛选出id在2,4内
var str=[2,4];
//筛选方法,其核心是str.indexOf(item.id) !== -1;判断
var news2 = json2.filter(function(item, index, array){
return str.indexOf(item.id) !== -1;
});
//这时候就会输出id为2和4的数据
console.log(JSON.stringify(news2));