在jQuery中 关于json空对象筛选替换


Posted in Javascript onApril 15, 2013

Requirement:

一个json object,并且可能包含一些空值或者空字符串,在页面显示的时候希望遇到空值显示“N/A”,但是有一部分值是允许空值的。因此希望通过筛选将空值设为“N/A”.例如希望学生的“age”和“score”如果为空显示“N/A”,而“sex”或者“comment”为空则不做处理。

var student = {
            "name" : "Guo",
            "sex" : "",
            "age" : "",
            "num ": 01,
            "scores" : [
                    {
                        "subject" : "English",
                        "score" : 50,
                        "comment" : ""
                    },
                    {
                        "subject" : "Computer",
                        "score" : "",
                        "comment" : "absent"
                    }
                ]        };
        var exclude = ["sex", "comment"];
        // method 1 to validate obj
        validateObj1 = function(obj, excluded){
            var value;
            for(var key in obj){
                value = obj[key];
                if($.isArray(value)){
                    obj = validateArray1(obj, key, excluded);
                }else if(($.inArray(key, excluded) == -1) && ($.isBlank(value))){
                    obj[key] = "N/A";
                }
            }
            return obj;
        }
        validateArray1 = function(obj, key, excluded){
            var subValue;
            for(var i = 0, length = obj[key].length; i < length; i++){
                for(var subKey in obj[key][i]){
                    subValue = obj[key][i][subKey];
                    if(($.inArray(subKey, excluded) == -1) && ($.isBlank(subValue))){
                        obj[key][i][subKey] = "N/A";
                    }
                }
            }
            return obj;
        }
        // method 2 to validate obj
        validateObj2 = function(obj, excluded){
            $.each(obj ,function(key, value){
                if($.isArray(value)){
                    obj = validateArray2(obj, key, excluded);
                }else if(isInvalid(key, value, excluded)){
                    obj[key] = "N/A";
                }
            });
            return obj;
        }
        validateArray2 = function(obj, key, excluded){
            for(var i = 0, length = obj[key].length; i < length; i++){
                $.each(obj[key][i] ,function(subKey, subValue){
                    if(isInvalid(subKey, subValue, excluded)){
                        obj[key][i][subKey] = "N/A";
                    }
                });
            }
            return obj;
        }
        isInvalid = function(key, value, excluded){
            return (($.inArray(key, excluded) == -1) && ($.isBlank(value))) ? true : false;
        }
        $.isBlank = function(obj){
            return(!obj || $.trim(obj) === "");
        };

Method 1 结果

 在jQuery中 关于json空对象筛选替换

Method 2 结果

 在jQuery中 关于json空对象筛选替换

Javascript 相关文章推荐
Tinymce+jQuery.Validation使用产生的BUG
Mar 29 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
Jan 03 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
Dec 29 Javascript
JSON与XML优缺点对比分析
Jul 17 Javascript
js实现跨域访问的三种方法
Dec 09 Javascript
JS实现单击输入框弹出选择框效果完整实例
Dec 14 Javascript
JS Array.slice 截取数组的实现方法
Jan 02 Javascript
JS+CSS实现DIV层的展开、收缩效果
Jan 28 Javascript
基于JavaScript实现自动更新倒计时效果
Dec 19 Javascript
js生成随机颜色方法代码分享(三种)
Dec 29 Javascript
基于JavaScript实现飘落星星特效
Aug 10 Javascript
关于小程序优化的一些建议(小结)
Dec 10 Javascript
在Javascript中 声明时用&quot;var&quot;与不用&quot;var&quot;的区别
Apr 15 #Javascript
关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
Apr 15 #Javascript
深入了解javascript中的prototype与继承
Apr 14 #Javascript
谈谈JavaScript中的函数与闭包
Apr 14 #Javascript
在新窗口打开超链接的方法小结
Apr 14 #Javascript
JS中setTimeout()的用法详解
Apr 14 #Javascript
js验证是否为数字的总结
Apr 14 #Javascript
You might like
PHP 文章中的远程图片采集到本地的代码
2009/07/30 PHP
Smarty模板学习笔记之Smarty简介
2014/05/20 PHP
PHP仿微信发红包领红包效果
2016/10/30 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
2018/10/24 PHP
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
js 窗口抖动示例
2013/09/04 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
2015/02/04 Javascript
javascript 常用验证函数总结
2016/06/28 Javascript
修改jquery中dialog的title属性方法(推荐)
2016/08/26 Javascript
Javascript实现汉字和拼音互转的终极方案
2016/10/19 Javascript
对Vue- 动态元素属性及v-bind和v-model的区别详解
2018/08/27 Javascript
vue-router命名路由和编程式路由传参讲解
2019/01/19 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
2020/11/12 Javascript
echarts饼图各个板块之间的空隙如何实现
2020/12/01 Javascript
如何管理Vue中的缓存页面
2021/02/06 Vue.js
[01:37]DOTA2超级联赛专访ChuaN 传奇般的电竞之路
2013/06/19 DOTA
Python中的生成器和yield详细介绍
2015/01/09 Python
关于python的list相关知识(推荐)
2017/08/30 Python
python实现在pandas.DataFrame添加一行
2018/04/04 Python
python中cPickle类使用方法详解
2018/08/27 Python
python 文件查找及内容匹配方法
2018/10/25 Python
python截取两个单词之间的内容方法
2018/12/25 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
Django异步任务线程池实现原理
2019/12/17 Python
基于python实现文件加密功能
2020/01/06 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
Pycharm中配置远程Docker运行环境的教程图解
2020/06/11 Python
python 利用zmail库发送邮件
2020/09/11 Python
html5 CSS过度-webkit-transition使用介绍
2013/07/02 HTML / CSS
HTML5中图片之间的缝隙完美解决方法
2017/07/07 HTML / CSS
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
就业协议书怎么填
2014/04/11 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
2015年秋季运动会加油稿
2015/07/22 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
2019最新公司租房合同(例文)
2019/07/18 职场文书