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

本文介绍了一种使用原生JavaScript来遍历JSON对象的方法,通过查找特定ID更新其属性,并在找到目标后提前终止循环,以此提高执行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值