双鱼座的天蝎

导航

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)           返回元素:['开发商', '开发商', '开发商', '开发商', '开发商', '开发商',  '厂商', '厂商', '用户', '用户', '普通员工', '普通员工']

 

posted on 2018-09-21 10:45  双鱼座的天蝎  阅读(745)  评论(0编辑  收藏  举报