json操作大全(插入,剪取,删除,获取,排序,去重,合并,查找,过滤,子元素集合)
1)json元素插入
var arr=['A','B','C','D','E'];
在头部位置插入:arr.unshift('X') 返回新arr的count:5 arr=[X,A,B,C,D,E]
在尾部位置插入:arr.push('X') 返回新arr的count:5 arr=[A,B,C,D,E,X]
在指定位置插入:arr.splice(2,0,'X') 无返回 arr=[A,B,X,C,D,E,X] (第2个参数0表示:索引2的位置删除0个元素)
2)json元素剪取或删除
var arr=['A','B','C','D','E'];
剪取或删除头部元素:arr.shift() 返回顶部元素:A arr=[B,C,D,E]
剪取或删除尾部元素:arr.pop() 返回尾部元素:E arr=[A,B,C,D]
删除指定元素:arr.splice(3,1) 无返回 arr=[A,B,D,E]
3)json元素获取
var arr=['A','B','C','D','E'];
获取头部位置单个元素:arr.slice(0,1) 返回元素:A arr不改变
获取尾部位置单个元素:arr.slice(arr.length-1,arr.length) 返回元素:E arr不改变
获取指定位置单个元素:arr.slice(2,3) 返回元素:C arr不改变
获取范围位置多个元素:arr.slice(2,arr.length) 返回元素:C,D,E arr不改变
4)json元素排序&去重
var arr=['B','A','A','D','C'];
正序排序:arr.sort() 返回元素:B,A,A,D,C arr=[A,A,A,D,C]
根据id正序:arr.sort(function(a, b) {return a.id - b.id;})
倒序排序:arr.reverse() 返回元素:C,D,A,A,B arr=[C,D,A,A,B]
根据id倒序:arr.sort(function(a, b) {return b.id - a.id;})
去重:Array.from(new Set(arr)) 返回元素:['B','A','D','C']
去重正序排序:$.unique(arr.sort()) 返回元素:A,B,C,D arr=[A,B,C,D]
去重倒序排序:$.unique(arr.reverse()) 返回元素:C,D,A,B arr=[C,D,A,B]
随机排序:arr.sort(function () { return parseInt(Math.random() * 10 - 5) }) 返回元素:B,A,C,D,A arr=[B,A,C,D,A]
5)json 合并(不去重)
var arr1 = ['a', 'b', 'c']; var arr2 = ['d', 'c', 'abc'];
var arr3 = ['l', 'm', 'n'];
两个合并:$.merge(arr1,arr2); 返回元素:a,b,c,d,c,abc
多个合并:arr1.concat(arr2).concat(arr3); 返回元素:a,b,c,d,c,abc,l,m,n
6)json 查找(类似indexof)
var arr = ['a', 'b', 'c','abc', 'bbb', 'ccc'];
查找是否存在b: $.inArray('b',arr); 返回:1 ,表示元素在位置1
查找是否存在cc: $.inArray('cc',arr); 返回:-1 ,表示元素不存在
7)json过滤
var arr=[{k:"D",v:4},{k:"B",v:2},{k:"A",v:1},{k:"A",v:1},{k:"C",v:3},{k:"B",v:2},{k:"D",v:4},{k:"B",v:2}]
查找所有B的元素:arr.filter(a=> a.k=='B') 返回元素:[{k:"B",v:2},{k:"B",v:2},{k:"B",v:2}]
或:arr.filter(function(d){ return d.k=='B' })
或:$.grep(arr,function(n,i){ return a.k=='B' })
注:filter与grep区别:filter必须引用Jquery;grep为JS原生
8)获取json子元素集合
let arr=[ { r_id: 1, role_name: '开发商', n_id: 1, txt: '主页' }, { r_id: 1, role_name: '开发商', n_id: 2, txt: '项目' }, { r_id: 1, role_name: '开发商', n_id: 3, txt: '报警' }, { r_id: 1, role_name: '开发商', n_id: 4, txt: '客户' }, { r_id: 1, role_name: '开发商', n_id: 5, txt: '设备' }, { r_id: 1, role_name: '开发商', n_id: 6, txt: '设置' }, { r_id: 2, role_name: '厂商', n_id: 1, txt: '主页' }, { r_id: 2, role_name: '厂商', n_id: 2, txt: '项目' }, { r_id: 3, role_name: '用户', n_id: 2, txt: '项目' }, { r_id: 3, role_name: '用户', n_id: 1, txt: '主页' }, { r_id: 4, role_name: '普通员工', n_id: 3, txt: '报警' }, { r_id: 4, role_name: '普通员工', n_id: 5, txt: '设备' } ]
子元素集合:arr.map(a => a.role_name) 返回元素:['开发商', '开发商', '开发商', '开发商', '开发商', '开发商', '厂商', '厂商', '用户', '用户', '普通员工', '普通员工']