zoukankan      html  css  js  c++  java
  • json 数组 字符串转换 关联数组使用 清空数组

    字符串转对象(strJSON代表json字符串) 
      var obj = eval(strJSON); 
      var obj = strJSON.parseJSON(); 
      var obj = JSON.parse(strJSON); 
    json对象转字符串(obj代表json对象) 
      var str = obj.toJSONString(); 
      var str = JSON.stringify(obj) 
    运用时候需要除了eval()以外需要json.js包(切记哦) 

    测试一个关联数组,添加数据,删除数据

    html代码

    <span class="btn add">添加数组</span>
          <span class="btn delete">删除数组</span>

    js代码

    /*从数组中根据元素删除指定的项*/
    Array.prototype.indexOf = function(val) {
    for (var i = 0; i < this.length; i++) {
    if (this[i] == val) return i;
    }
    return -1;
    };
    Array.prototype.remove = function(val) {
    var index = this.indexOf(val);
    if (index > -1) {
    this.splice(index, 1);
    }
    };


    $(".add").click(function(){ var arr = []; var aa=["id1","id2","id3"]; var c2={ "id1":["a","1","2111"], "id2":["a2","12","21112"], "id3":["a3","12","21112"] }; console.log(c2.id2); for(var i=0; i<aa.length; i++){ console.log(c2[aa[i]]); arr.push(c2[aa[i]]); console.log("arr:"+arr); } $(".del").click(function(){ arr.remove(c2.id2); console.log("arr删除后:"+arr); }) })

     关联数组的创建与用splice删除数组

    删除数组的js

    //移除元素
    var attrIndexOf = function (target, list, attr) {
        var i = 0, l = list.length;
        for (i = 0; i < l; i += 1) {
            if (list[i][attr] == target) {
                return i;
            }
        };
        return -1;
    };
    var removeItem = function (id) {
        var pos = attrIndexOf(id, newArray, 'dataid');
        if (pos !== -1) {
            newArray.splice(pos, 1);
        };
    };
    attrIndexOf方法确定当前要移除的数组的位置
    removeItem 方法移除数组元素

    去重添加数组元素

    if(jQuery.inArray(ObjData, ObjArr)==-1){//如果-1 在选中时push添加
       ObjArr.push(ObjData);    
     }  
    ObjArr是数组,
    ObjData是要插入数组的元素
    inArray方法为-1的时候代表ObjArr数组中还没有ObjData元素,就可以push到数组

    创建二维数组
    var newArray = [];
    var prdArray = [];
            $("#prdlist").delegate("li","click",function(){ 
                var _t=$(this);
                var dataid=_t.data("id");//或许选中的商品id
                var id = "a"+dataid;
                var pic = _t.find(".pic img").attr("src");
                var title = _t.find(".title").html();
                var price = _t.find(".price").html();
                prdArray = {dataid:dataid,pic:pic,title:title,price:price};
                checkedEle(_t,prdArray,newArray,0);//执行选择
                console.log("%c newArray:"+newArray,"background:#c00;color:#fff");
                console.log("%c "+newArray.length,"background:#c00;color:#fff");
                /* 预览区域 */
                var prehtml = "";
                var aLen=newArray.length;
                if(aLen>0){
                    for(var i=0;i<aLen;i++)    { 
                        var dataid = newArray[i]['dataid'];
                        var pic = newArray[i]['pic'];
                        var title = newArray[i]['title'];
                        var price = newArray[i]['price'];
                        prehtml += "<li data-id='"+dataid+"' id='p"+dataid+"'>"
                                    +"<a href='javascript:void(0);'>"
                                    +"<span class='move_area'><i class='layer_icon_move' title='点击我可以拖拽排序哦'></i></span>"
                                    +"<div class='prdinfo'>"
                                    +"<div class='pic'><img src='"+pic+"'></div>"
                                    +"<div class='prd-desc'>"
                                    +"<p class='title'>"+title+"</p>"
                                    +"<p class='price'>"+price+"</p></div>"
                                    +"</div>"
                                    +"<div class='cancleprd'>X</div>"
                                    +"</a></li>";
                    }
                }
                $("#previewprd ul").html(prehtml);
            });

    以上代码,有很多个这样的元素,属性和值不同,点击某个元素,获得当前元素的一些属性值,将它放在一个一维数组prdArray 中,checkedEle是去重添加数组,将一维数组prdArray当成元素push给新数组newArray。

    $("#previewprd ul")里面放由数组拆成的元素重新组合成的html,数组拆出值用for循环var dataid = newArray[i]['dataid'];   这里必须是单引号,双引号和无引号都不行。

    清空数组方法

    方式1,splice

    var ary = [1,2,3,4];
    ary.splice(0,ary.length);
    console.log(ary); // 输出 [],空数组,即被清空了

    方式2,length赋值为0

    这种方式很有意思,其它语言如Java,其数组的length是只读的,不能被赋值。如

    int[] ary = {1,2,3,4};
    ary.length = 0;

    Java中会报错,编译通不过。而JS中则可以,且将数组清空了,

    var ary = [1,2,3,4];
    ary.length = 0;
    console.log(ary); // 输出 [],空数组,即被清空了

    方式3,赋值为[]

    var ary = [1,2,3,4];
    ary = []; // 赋值为一个空数组以达到清空原数组

    这里其实并不能说是严格意义的清空数组,只是将ary重新赋值为空数组,之前的数组如果没有引用在指向它将等待垃圾回收。

  • 相关阅读:
    剑气之争,聊聊算法岗位的门户之见!
    80%学生的困惑,学完C/C++之后学什么?
    算法工程师日常,训练的模型翻车了怎么办?
    迭代器设计模式,帮你大幅提升Python性能
    十年编程经验总结,三点技巧帮你提升代码能力!
    CenterNet:Corner-Center三元关键点,检测性能全面提升 | ICCV 2019
    CornerNet:经典keypoint-based方法,通过定位角点进行目标检测 | ECCV2018
    阿里面试:MySQL如何设计索引更高效?
    大厂是怎么进行SQL调优的?
    程序人生|从网瘾少年到微软、BAT、字节offer收割机逆袭之路
  • 原文地址:https://www.cnblogs.com/snowbaby-kang/p/4022785.html
Copyright © 2011-2022 走看看