js对象数组遍历


前言:最近由于项目需求,新增了一个行程搜索结果页,搜索的关键字需要高亮。且从搜索结果页进入原来的行程详情页,原来详情页中的关键字也同样需要做高亮处理。由于详情页是之前做好的,页面渲染用的是underscore模板。一个页面中大大小小的模板有很多,为了避免麻烦和便于管理。我决定不对原有的模板结构进行修改,直接将从服务端的数据进行过滤一遍,然后对需要高亮的关键字进行数据替换。随意会增加页面初始渲染时间,可总体从后期页面维护和管理来说这样牺牲点性能也是可以接受的。

技术:主要是利用递归方法对后端的返回的json数据进行遍历。


我们都知道从后端返回的json数据是一个Object,Object里面有会对象和数组,数组里面可能还会有对象,数组里面的对象可能还会有对象和数组。总之就是像一棵树一样的可以无穷无尽的扩展下去。


代码:

var jojo=function(data){
    //技巧:用constructor 去判断数据类型比typeof 和instanceof 更好使
    if(data.constructor==Object){
        for(var i in data){
            if(data[i].constructor==String|| data[i].constructor==Number){
                console.log('对象值的输出:'+data[i]);
            }else{
                //递归调用
                jojo(data[i]);
            }
        }
    }else if(data.constructor==Array){
        for(var i= 0,max=data.length;i<max;i++){
            if(data[i].constructor==String|| data[i].constructor==Number){
                console.log('数组值的输出:'+JSON.stringify(data[i]));
            }else{
                //递归调用
                jojo(data[i]);
            }
        }
    }
}

//测试数据
var testData={
    "item1":'item1',
    "item2":[{
        "item21":'item21'
    },{
        "item22":'item22'
    },{
        "item23":'item23'
    }],
    "item3":[
        {
            "item31":[
                {
                    "item32":'item32'
                }
            ]
        }
    ],
    "item4":['item41','item42']
}
//输出
jojo(testData);



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值