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重新赋值为空数组,之前的数组如果没有引用在指向它将等待垃圾回收。

你可能感兴趣的:(json)