JavaScript基础学习--14 json、数组

 
一、json
     1、格式与取值:{key: value}
var json = {'name': 'jiang'}     //最好用字符串的形式保存key,否则安全性不高
console.log(json.name);     //jiang
console.log(json[name]);     //undefined
console.log(json['name']);     //jiang
 
     2、前后端常用格式:
var response = {
    result: [{
        'id': 1,
        'name': 'nihao'
 
    }, {
        'id': 1,
        'name': 'nihao'
    }],
    length: 2
};
 
======================================
var response = {
    result: [{...},{...}],
    length: 2
};
 
     3、for  in 遍历json
var json = {
    'name': 'nihao',
    'id': '1'
};
for (var key in json) {
    alert(key);
    alert(json[key]);     //因为key是变量,所以只能用[], 而不能用点方法
}
 
     4、for in 遍历对象
 
     5、关于for in 和for循环
          5.1     json和对象都没有length属性,所以遍历只能用for in 不能用for循环
          5.2     数组既可以用for in,还可以呀for循环---》for in 范围广
 
二、数组
1、定义
var arr = [1, 2, 3];          //方便推荐
var arr2 = new Array(1, 2 3);
//小细节: arr2 = new Array(4) 此时如果参数是数字类型,且只有一个,则定义的是length。此时length = 4
//小细节: arr2 = new Array('4') 此时如果参数是数字类型,且只有一个,则定义的是length。此时是字符串形式,所以length = 1,且值为'4'
 
2、length属性可读可写
//tips. 快速清空数组的方法:
arr.length = 0;
arr = [];  //当数组中有万以上数据时,效率更高的方法是给数组重新赋值为空[], 这种清空数组的方法效率高
 
注意:数组中的length属性可写,但是字符串中的length属性不可写,无效
 
3、数组方法(操作原数组)
     3.1     arr.push();     //往数组的最后一位添加,且返回一个数组长度值     alert(arr.push('abc'));     //返回数组长度
     3.2     arr.unshift();     //往数组的第一位添加值,返回数组长度,但是 IE6、7不支持unshift的返回值
     3.3     arr.pop();     //删除数组的最后一位,返回值是删除的数据
     3.4     arr.shift();     //删除数组的第一位,返回值是删除的数据
//tips 
arr = ['12', '34', '56'];
arr.unshift(arr.pop()); // '56', '12', '34'
arr.push(arr.shift());     //'34', '56', '12'
     3.5     arr.splice(ind, length, val2)     //从第ind位置开始删除,一共删除length项,用val2替换
          注意:返回值只返回删除的数据,如果没有删除,则返回空
 
4、数组去重
//方法一
function deRepeat(arr) {
    var newArr = [];
    for (var i = 0; i < arr.length; i++) {
        if (newArr.indexOf(arr[i]) === -1) {
            newArr.push(arr[i]);
        }
    }
    return newArr;
}
 
var a = [1, 1, 2, 3];
alert(deRepeat(a));
 
================================================
//方法二
function deRepeat2(arr) {
    for (var i = 0; i < arr.length; i++) {
        for (var j = i + 1; j < arr.length; j++) {
            if (arr[i] === arr[j]) {
                arr.splice(j, 1);
                j--;
            }
        }
    }
    return arr;
}
var a = [1, 1, 2, 3];
alert(deRepeat2(a));
 
5、sort排序     arr.sort();
     注意:排序是按照字符串的ascll码排序的
//js原生排序的方法,sort里面的函数,如果是a - b > 0; 则交换a b 位置......
arr.sort(function(a, b){
     return a-b;
     //return parseInt(a) - parseInt(b);     只会交换位置,不会改变数据格式,所以此时如果数据是 '123px' ,则用parseInt方法转换之后计算,最后输出仍然是 '123px'
});
 
//其他排序:快速、希尔、冒泡、归并、选择、插入
 
6、随机排序
arr.sort(function(a, b){
     return Math.random() - 0.5;     //Math.random() 返回0-1之间的随机数
});
 
7、Math.random()     0 ~ 1 随机数
     7.1     0 || 1     Math.round(Math.random());   
//2 ~ 6
Math.round(Math.random() * 4 + 2);
 
//0 ~ 10
Math.round(Math.random() * 10);
 
//12 ~ 99
Math.round(Math.random() * (99 - 12) + 12);     //12 ~ 99 ,最小数是12,然后加上0 ~ (99-12)之间的数,结果就是12 ~ 99
 
//x ~ y
Math.round(Math.random() * (y - x) + x);
 
//0 ~ y
Math.round(Math.random() * y);
 
//1 ~ y
Math.ceil(Math.random() * y);
 
8、arr1.concat(arr2, arr3);     //连接几个数组
 
9、arr.reverse();     //倒序
//tips.     将字符串倒序
arr.split('').reverse().join('');

 

 
 
 
 
 
 
 
posted @ 2017-08-21 17:07  HelenJ  阅读(209)  评论(0编辑  收藏  举报