对json对象按照id精确查询并修改值

用js的写法,只要找某个json,找到了以后,就break ,结束循环,这样性能最好。之前百度查到用jquery写,但是jquery是递归效率低,所以改为原生js,jquery版本的我没试,js版本得行。
jquery版本

function getAllCld(obj){
   for(var o in obj){
      if(typeof o == "string"){
     //dosomething
     }
     else {
       getAllCld(o);
    }
  }
}

js版本

var zNodes=[
                        { id:101, pId:0, name:"全部"},
                        { id:201, pId:101, name:"管理人员"},    
                        { id:202, pId:101, name:"驻巡人员"},
                        { id:203, pId:101, name:"企业"},
                        { id:20488, pId:101, name:"管理处"},
                        { id:20101, pId:201, name:"忻府区道路运输管理所"},
                        { id:20102, pId:201, name:"定襄县道路运输管理所 "},
                        { id:20103, pId:201, name:"五台县道路运输管理所"},
                        { id:20104, pId:201, name:"原平市道路运输管理所"},
                        { id:20105, pId:201, name:"代县道路运输管理所"},
                        { id:20106, pId:201, name:"繁峙县道路运输管理所"},
                        { id:20107, pId:201, name:"宁武县道路运输管理所"},
                        { id:20108, pId:201, name:"静乐县道路运输管理所"},
                        { id:20109, pId:201, name:"神池县道路运输管理所"},
                        { id:20110, pId:201, name:"五寨县道路运输管理所"},
                        { id:20111, pId:201, name:"岢岚县道路运输管理所"},
                        { id:20112, pId:201, name:"河曲县道路运输管理所"},
                        { id:20113, pId:201, name:"保德县道路运输管理所"},
                        { id:20114, pId:201, name:"偏关县道路运输管理所"},
                        { id:20201, pId:202, name:"忻府区道路运输管理所"},
                        { id:20202, pId:202, name:"定襄县道路运输管理所 "},
                        { id:20203, pId:202, name:"五台县道路运输管理所"},
                        { id:20204, pId:202, name:"原平市道路运输管理所"},
                        { id:20205, pId:202, name:"代县道路运输管理所"},
                        { id:20206, pId:202, name:"繁峙县道路运输管理所"},
                        { id:20207, pId:202, name:"宁武县道路运输管理所"},
                        { id:20208, pId:202, name:"静乐县道路运输管理所"},
                        { id:20209, pId:202, name:"神池县道路运输管理所"},
                        { id:20210, pId:202, name:"五寨县道路运输管理所"},
                        { id:20211, pId:202, name:"岢岚县道路运输管理所"},
                        { id:20212, pId:202, name:"河曲县道路运输管理所"},
                        { id:20213, pId:202, name:"保德县道路运输管理所"},
                        { id:20214, pId:202, name:"偏关县道路运输管理所"},
                        { id:1, pId:203, name:"忻府区道路运输管理所"},
                        { id:2, pId:203, name:"定襄县道路运输管理所 "},
                        { id:3, pId:203, name:"五台县道路运输管理所"},
                        { id:4, pId:203, name:"原平市道路运输管理所"},
                        { id:5, pId:203, name:"代县道路运输管理所"},
                        { id:6, pId:203, name:"繁峙县道路运输管理所"},
                        { id:7, pId:203, name:"宁武县道路运输管理所"},
                        { id:8, pId:203, name:"静乐县道路运输管理所"},
                        { id:9, pId:203, name:"神池县道路运输管理所"},
                        { id:10, pId:203, name:"五寨县道路运输管理所"},
                        { id:11, pId:203, name:"岢岚县道路运输管理所"},
                        { id:12, pId:203, name:"河曲县道路运输管理所"},
                        { id:13, pId:203, name:"保德县道路运输管理所"},
                        { id:14, pId:203, name:"偏关县道路运输管理所"},
                        ]; 
            for(var item in zNodes){
                if(zNodes[item].id==12){
                    zNodes[item].pId=303;
                    zNodes[item].checked="true";
                     break;
                }
            }
            console.log(zNodes);

结果如下

0
:
{id: 101, pId: 0, name: "全部"}
1
:
{id: 201, pId: 101, name: "管理人员"}
2
:
{id: 202, pId: 101, name: "驻巡人员"}
3
:
{id: 203, pId: 101, name: "企业"}
4
:
{id: 20488, pId: 101, name: "管理处"}
5
:
{id: 20101, pId: 201, name: "忻府区道路运输管理所"}
6
:
{id: 20102, pId: 201, name: "定襄县道路运输管理所 "}
7
:
{id: 20103, pId: 201, name: "五台县道路运输管理所"}
8
:
{id: 20104, pId: 201, name: "原平市道路运输管理所"}
9
:
{id: 20105, pId: 201, name: "代县道路运输管理所"}
10
:
{id: 20106, pId: 201, name: "繁峙县道路运输管理所"}
11
:
{id: 20107, pId: 201, name: "宁武县道路运输管理所"}
12
:
{id: 20108, pId: 201, name: "静乐县道路运输管理所"}
13
:
{id: 20109, pId: 201, name: "神池县道路运输管理所"}
14
:
{id: 20110, pId: 201, name: "五寨县道路运输管理所"}
15
:
{id: 20111, pId: 201, name: "岢岚县道路运输管理所"}
16
:
{id: 20112, pId: 201, name: "河曲县道路运输管理所"}
17
:
{id: 20113, pId: 201, name: "保德县道路运输管理所"}
18
:
{id: 20114, pId: 201, name: "偏关县道路运输管理所"}
19
:
{id: 20201, pId: 202, name: "忻府区道路运输管理所"}
20
:
{id: 20202, pId: 202, name: "定襄县道路运输管理所 "}
21
:
{id: 20203, pId: 202, name: "五台县道路运输管理所"}
22
:
{id: 20204, pId: 202, name: "原平市道路运输管理所"}
23
:
{id: 20205, pId: 202, name: "代县道路运输管理所"}
24
:
{id: 20206, pId: 202, name: "繁峙县道路运输管理所"}
25
:
{id: 20207, pId: 202, name: "宁武县道路运输管理所"}
26
:
{id: 20208, pId: 202, name: "静乐县道路运输管理所"}
27
:
{id: 20209, pId: 202, name: "神池县道路运输管理所"}
28
:
{id: 20210, pId: 202, name: "五寨县道路运输管理所"}
29
:
{id: 20211, pId: 202, name: "岢岚县道路运输管理所"}
30
:
{id: 20212, pId: 202, name: "河曲县道路运输管理所"}
31
:
{id: 20213, pId: 202, name: "保德县道路运输管理所"}
32
:
{id: 20214, pId: 202, name: "偏关县道路运输管理所"}
33
:
{id: 1, pId: 203, name: "忻府区道路运输管理所"}
34
:
{id: 2, pId: 203, name: "定襄县道路运输管理所 "}
35
:
{id: 3, pId: 203, name: "五台县道路运输管理所"}
36
:
{id: 4, pId: 203, name: "原平市道路运输管理所"}
37
:
{id: 5, pId: 203, name: "代县道路运输管理所"}
38
:
{id: 6, pId: 203, name: "繁峙县道路运输管理所"}
39
:
{id: 7, pId: 203, name: "宁武县道路运输管理所"}
40
:
{id: 8, pId: 203, name: "静乐县道路运输管理所"}
41
:
{id: 9, pId: 203, name: "神池县道路运输管理所"}
42
:
{id: 10, pId: 203, name: "五寨县道路运输管理所"}
43
:
{id: 11, pId: 203, name: "岢岚县道路运输管理所"}
44
:
{id: 12, pId: 303, name: "河曲县道路运输管理所", checked: "true"}
45
:
{id: 13, pId: 203, name: "保德县道路运输管理所"}
46
:
{id: 14, pId: 203, name: "偏关县道路运输管理所"}
length
:
47
__proto__
:
Array(0)
发布了13 篇原创文章 · 获赞 7 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_37199669/article/details/78526757