zoukankan      html  css  js  c++  java
  • 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('');
     
     
     
     
     
     
     
  • 相关阅读:
    C#实现根据域名查询ip实例
    Ajax: 一个建立Web应用的新途径(转)
    CRC循环校验的具体算法(转)
    生成静态文件的新闻系统核心代码(.net C#)
    一个ajax的例子
    使用 JavaScript 实现 XMLHttpRequest,在IE,FireFox 上测试通过
    微软SQL Server 2005的30项顶尖特性(转)
    利用XMLHTTP无刷新自动实时更新数据(转)
    五子棋的核心算法(转)
    编写安全的SQL Server扩展存储过程(转)
  • 原文地址:https://www.cnblogs.com/hihao/p/7405478.html
Copyright © 2011-2022 走看看