对象和数组-把数据转换成对象

————————————————————————————————————

<script type="text/javascript">    
            //根据用户的输入,创建对象的数据
            function buildObj(){
                //获取新元素key和val的dom
                var key = document.getElementById('key').value;
                var val = document.getElementById('val').value;
                //取得当前对象文本的内容
                var str = document.getElementById('obj_txt').innerHTML.trim();
                //把字符转换成JavaScript的对象
                var obj = str==''?{}:eval('('+str+')');
                //使用正则表达式,如果是数字型的数据,则直接连接,否则需要加上单引号
                if(/\d+\.?\d*/.test(val))
                    obj[key] = val;    
                else
                    obj[key] = '\''+val+'\'';    //对val加上单引号
                //把最新的对象的文本形式打印出来
                document.getElementById('obj_txt').innerHTML = convertObj(obj);
            }            
            //把对象转换成文本形式 ,这也是json转换的形式
            function convertObj(obj){
                var str = '{';                //定义字符变量,用于串联
                for(var prop in obj){        //便利对象的属性
                    //如果为对象类型,则遍历连接
                    if(typeof(obj[prop]) == 'object'){
                        str += prop+':'+convertObj(obj[prop])+',';
                    //如果是字符形式,则需要加单引号
                    }else if(typeof(obj[prop]) == 'string'){
                        str += prop+':\''+obj[prop]+'\',';
                    //其他的则直接显示
                    }else{
                        str += prop+':'+obj[prop]+',';
                    }
                }
                //把最后一个逗号去掉,否则不是标准的形式
                if(str.charAt(str.length-1) == ','){
                    str = str.substr(0,str.length-1);
                }
                str += '}';                    //拼接最后一个大括号
                return str;                    //返回最后的拼接结果字符
            }
        </script>

————————————————————————————————————

convetObj()函数的功能是把数据从字符形式转换为对象形式,其中还用到了递归方法。

在该函数中,需要首先考虑数据的类型,基本的数据类型只是数字型和字符型,数字型不必加单引号,而字符型需要加单引号。

posted @ 2016-09-29 18:56  承载梦想-韩旭明  阅读(5206)  评论(0编辑  收藏  举报