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

posted @ 2014-10-13 18:11  雪宝贝_kang  阅读(981)  评论(0编辑  收藏  举报