JavaScript的json和Array及Array数组的使用方法

1、关于json

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集.也可以称为数据集和数组类似,能够存数据!

  1. //Array数组
  2. //数组的常用语法如下  数组用中括号<[]存储数据> length数组的长度<数组独有!>
  3. var Array=[1,3,5,7,9];
  4. //    数组名 Array<数组/保留字,保留字>
  5. //alert(Array.length);    弹出当前  Array数组的长度length
  6. //alert(Array[0]);    数组的取值  数组名加[]中括号  括号里面是第几个
  7. //Array数组的循环  <遍历>
  8. //数组的第一种循环   for(var i=0;i<Array.length;i++){}
  9. //数组的第二种循环   for(var i in Array){alert(i);}
  10. //json  数据集
  11. //常用的json语法 如下  json用大括号<{}存储数据>  length不能表示json数据集的长度<数组独有!>
  12. //  var json={a:5,b:7,c:9};           和数组的区别
  13. //声明变量  变量名={变量名:冒号 值,逗号隔开}
  14. //    json名 json<数据集/保留字>
  15. //  alert(json.a);            // 取值方法1 变量名<.句号 下标>变量名
  16. //  alert(json['a']);         // 取之方法2变量名[]中括号['变量名']; 写成字符串
  17. //例子如下
  18. //  var aNumber={a:5,b:6,c:7};
  19. //  aNumber.b++;                  //能够++   6=6+1/6=+1/6++
  20. //  alert(aNumber['b']);             //结果是7
  21. //json的循环  用for in  循环 <只能用for in 循环>
  22. //      for(var i in aNumber){
  23. //          alert(aNumber[i]);
  24. //弹出数据集的  所有遍历 的值
  25. //      };
  26. //                    json数据集与Array数组的区别!<三点>
  27. //      1、 存储数据:  json数据集                                  Array数组
  28. //      json={a:5,b:6,c:7};                            Array=[1,2,3,4];
  29. //              2、取值方法:   json数据集                                  Array数组
  30. //      json[i]全部/  json['a'];<变量名外加字符串>                 Array[i];全部/ Array[0];
  31. //      2、循环方法:   json数据集                                  Array数组
  32. //              json没有length只能用for in 循环                            数组能用for循环和for in循环  length是数组的长度<只有数组能使用>

JavaScript arguments对象

1、在JavaScript中,arguments对象是比较特别的一个对象,它可变参可以存储所有的参数.  arguments非常类似Array数组,但实际上又不是一个Array数组.在函数中,调用arguments是不必要写成任何函数名,而是直接写arguments即可.

2、arguments对象的长度是由实参个数决定的。形参是函数内部重新开辟内存空间存储的变量,但是其与arguments对象内存空间并不重叠。对于arguments和值都存在的情况下,两者值是同步的.

  1. function sum(){
  2. var sum=0;
  3. for(var i=0;i<arguments.length;i++){  //arguments存储了所有的参数
  4. sum=sum+arguments[i];         //a+=arguments; 每个数值被循环到后都与sum相加
  5. }
  6. return sum;                           //返回return写在循环下面是循环结束后得到的结果
  7. }
  8. alert(sum(81,88,999,4,8,6,3,4,7));

所有的形参都存储到了arguments里面 实参直接传给arguments

2、Array数组                使用原则,数组中只存储一种变量!

数组使用的语法

  1. //数组的写法
  2. //写法一
  3. var arr=new Array(8,6,4);
  4. //写法二
  5. var arr=[8,6,4];

我们可以看到最后的结果都是一样的但是写法二的效率明显要高的多  数组名=[];    代码短

如果我们需要取得数组中存储的某一个值,这个时候我们直接用数组加下标即可 如果需要获取数组的存储的数值的长度的话使用length 代码如下:

  1. var aUserName=['一','二','三','四','五']; //声明一个数组
  2. alert(aUserName[0]);                   //弹出找到这个数组的第一个值
  3. var b=aUserName.length;                //把这个数组的长度length赋予给b
  4. alert(b);                              //弹出这个数组的长度

length也能限制数组的长度 代码如下:

  1. var aUserName=['一','二','三','四','五']; //声明一个数组
  2. alert(aUserName[0]);                   //弹出找到这个数组的第一个值
  3. alert(aUserName.length);               //弹出这个数组的长度
  4. aUserName.length=3;                    //length可以限制数组的长度
  5. alert(aUserName);                      //这时候弹出数组明显只能看到3位数值
数组Array 对象方法
数组Array 对象方法
数组名+方法名 描述
concat() 连接两个或更多的数组,并返回结果。
join() 把数组的所有元素放入一个字符串.元素通过指定的分隔符进行隔.
pop() 删除并返回数组的最后一个元素
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
reverse() 颠倒数组中元素的顺序。
shift() 删除并返回数组的第一个元素
slice() 从某个已有的数组返回选定的元素
sort() 对数组的元素进行排序
splice() 删除元素,并向数组添加新元素。
toSource() 返回该对象的源代码。
toString() 把数组转换为字符串,并返回结果。
toLocaleString() 把数组转换为本地数组,并返回结果。
unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
valueOf() 返回数组对象的原始值
数组常用的方法枚举
1、从数组尾部开始的添加,语法:数组名.push();  要添加到Array数组  尾部的值,可以是一个或多个。方法push()将把它的参数顺次添加到数组Array的尾部。它直接修改array,而不是创建——个新的数组。方法push()和方法pop()用数组提供先进后出栈的功能。  <该方法会改变原数组>
 
理解栈(zhan) 栈是一个存储东西的容器 如果比喻成箱子的话 依次从箱子的最底部开始存放东西 直至存满 一层一层压积  所以最先放进去 栈里面的东西要拿出来的话 是最后才会出来的 因为要一层一层 的拿开 
 
数组名.push(要添加的值 多个时用逗号隔开)   使用方法  代码如下:
  1. //push使用方法
  2. var aArr=[6,7,8];    //声明数组
  3. aArr.push(9,10,11);  //像数组尾部添加数值  可添加一个或者多个
  4. alert(aArr);         //弹出的结果是6,7,8,9,10,11,
 

2、从数组尾部开始的删除, 语法:数组名.pop();   方法pop()每次去删除数组Array的最后一个元素,把数组长度减1,并且返回它删除后剩余的元素的值。

 
数组名.pop(不用写任何东西)                           使用代码如下:
  1. //push使用方法
  2. var aArr=[6,7,8];    //声明数组
  3. aArr.pop()           //使用后每次删除最后一个数值  直至删除完毕   剩余6  7
  4. aArr.pop()           //剩余6
  5. aArr.pop()           //空
  6. alert(aArr);         //弹出的结果是6,7,8,9,10,11,

3、 从头部开始的添加   方法unshift()  是将把它括号里面 的参数插入数组Array数组的头部,并将已经存在的元素顺次(向下排列 比如原来的第一位是1 下标是0当使用 unshift(9)方法 插入9 以后 9的下标是0    1的下标改变为1 在0的后面   依次向下排列 )       移地到较高的下标处,以便留出空间。

数组名.unshift();                                        代码如下
  1. //unshift的使用方法
  2. var arr=[6,7,8];
  3. arr.unshift(9);         //删除数组的首个元素
  4. alert(arr);             //结果为9,6,7,8



4、从头部开始的删除  方法shift()和方法Array.pop()相似,只不过它在数组头部(从数组头部开始删除)操作,而不是在尾部操作。该方法常常和unshift()一起使用。
 数组名.shift();                                               代码如下:
  1. //shift的使用方法
  2. var arr=[6,7,8];
  3. arr.shift();         //删除数组的首个元素
  4. alert(arr);          //结果为7,8

5、从位置删除、添加、置换数组  语法  数组.splice(start, deleteCount, value, ...)  中间是逗号隔开  能实增 删 改

start代表的是
开始插入和(或)删除的数组元素的位置(是下标)从下标的位置开始   即0代表1    开始的位置
deleteCount
从start开始,包括start所指的元素在内要删除的元素个数。这个参数是可选的,如果没有指定它,splice()将删除从start开始到原数组结尾的所有元素。
value, ...
要插人数组的零个或多个值(多个时 中间用逗号隔开),从start所指的下标处开始插入。

代码如下:

  1. //方法splice 使用方法
  2. var arr=[1,2,3,4,5,6];
  3. arr.splice(0,1,9,9,9,9);   //第一个值代表从第一个开始 , 删除的个数 , 后面是需要 添加的值
  4. alert(arr);                //弹出结果 9,9,9,9,1,2,6

置换:

  1. //方法splice 使用方法
  2. var arr=[1,2,3,4,5,6];
  3. arr.splice(0,2,9,9);   //第一个值代表从第一个开始 , 删除的个数 , 后面是需要 添加的值
  4. alert(arr);            //弹出结果 9,9,3,4,5,6

6、数组的拼接 语法   数组.concat()   将创建并返回一个新数组,这个数组是将所有参数都添加到array中生成的。它并不修改array。如果要进行concat()操作的参数是一个数组,那么添加的是数组中的元素,而不是数组。

代码如下:

  1. var arr=[1,2,3,4,5,6]
  2. var brr=['a','b','c','d','e','f'];
  3. alert(brr.concat(arr));            //弹出结果a,b,c,d,e,f,1,2,3,4,5,6

把数组arr拼接在数组brr后面

改变代码顺序:

  1. var arr=[1,2,3,4,5,6]
  2. var brr=['a','b','c','d','e','f'];
  3. alert(arr.concat(brr));            //弹出结果1,2,3,4,5,6,a,b,c,d,e,f,

把数组brr拼接在数组arr后面

concat常用于拼接.  拼接和弹出是一块儿写在alert()里面的.

7、数组的分隔符语法.join();    需要使用时写在alert()里面 且分隔符用 '  '     用单引号包住!

代码如下:

  1. //join 语法
  2. var arr=[1,2,3,4,5,6];
  3. alert(arr.join('  '));   //单引号直接可以是任何字符 弹出的结果是 1~2~3~4~5~6 包括空格

不会增加  只有在直接作用时才有用  是连接符 .拼接的元素 在两个两个元素之间进行添加  当只在括号加('')两个空单引号时 会把逗号给去掉 成拼接作用

join括号里面的参数:  在返回的字符串中用于分隔数组元素的字符或字符串,它是可选的。如果省略了这个参数,用逗号作为分隔符

8、数组的排序   语法  数组名.sort();

  1. //sort数组的排序
  2. var arr=[8,9,7,3,6,4,5,2,1];
  3. var brr=['float', 'width', 'alpha', 'zoom', 'left'];
  4. arr.sort();
  5. brr.sort();
  6. alert(arr);//结果为 1,2,3,4,5,6,7,8,9
  7. alert(brr);//结果为alpha,float,left,width,zoom

方法sort()将在原数组上对数组元素进行排序,即排序时不创建新的数组副本。如果调用方法sort()时没有使用参数,将按字母顺序(更为精确地说,是按照字符编码的顺序)对数组中的元素进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如果有必要的话),以便进行比较。
如果想按照别的顺序进行排序,就必须提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数a和b,其返回值如下:
       如果根据你的评判标准,a小于b,在排序后的数组中a应该出现在b之前,就返回一个小于0的值。

如果a等于b,就返回0。

如果a大于b,就返回一个大于0的值。

代码如下:

  1. //sort数组的排序
  2. var arr=[12, 8, 99, 19, 112];
  3. arr.sort(function (n1,n2){ //对比值 两个形参
  4. if(n1<n2)              //1<2  返回-1  将两个数的位置调换 a小于b,在排序后的数组中a应该出现在b之前,就返回一个小于0的值
  5. {
  6. return -1;
  7. }
  8. else if(n1>n2)         //1>2 返回1  返回一个正数 然后进行排序
  9. {
  10. return 1;
  11. }
  12. else
  13. {
  14. return 0;         // 如果n1等于n2,就返回0  保持这个顺序
  15. }
  16. });
  17. alert(arr);

加入这个函数

其实还可以简写 简写方式如下:

  1. //sort数组的排序
  2. var arr=[12, 8, 99, 19, 112];
  3. arr.sort(function (n1,n2){ //对比值 两个形参
  4. //return n1-n2;          //升序 小到大
  5. return n2-n1;            //降序 大到小
  6. });
  7. alert(arr);

9、颠倒顺序 数组名.reverse( )颠倒数组中元素的顺序
代码如下:

  1. //reverse数组的颠倒顺序
  2. var arr=[1,2,3,4,5,6,7,8,9,10];
  3. arr.reverse();
  4. alert(arr);   //结果为10,9,8,7,6,5,4,3,2,1

10、把数组类型转为字符串 语法 数组名.toString( );   将把数组转换成一个字符串,并且返回这个字符串。当数组用于字符串环境中时,JavaScript会调用这一方法将数组自动转换成一个字符串。但在某些情况下,需要明确地调用这个方法。

toString()在把数组转换成字符串时,首先要将数组的每个元素都转换成字符串 (通过调用这些元素的toString()方法)。当每个元素都被转换成字符串时,它就以列表的形式输出这些字符串,字符串之间用逗号分隔。返回值与没有参数的join()方法返回的字符串相同。
代码如下:

  1. var arr = new Array(3);
  2. arr[0] = "George";
  3. arr[1] = "John";
  4. arr[2] = "Thomas";
  5. //          document.write(arr.toString());
  6. alert(arr.toString());//结果为返回一个拼接的字符串中间用逗号隔开 George,John,Thomas;

11、返回一个新数组,原数组不变  语法 : 数组名.slice();

  slice方法用于提取原数组的一部分,返回一个新数组,原数组不变. 它的第一个参数为起始位置(从0开始),第二个参数为终止位置(但该位置的元素本身不包括在内)。如果省略第二个参数,则一直返回到原数组的最后一个成员。

代码如下:

  1. //slice数组的方法
  2. var arr = [1,2,3,4,5,6,7,8];
  3. //alert(arr.slice(0));    //返回值为1,2,3,4,5,6,7,8
  4. //alert(arr.slice(1,4));  //返回值为2,3,4
  5. //alert(arr.slice(2,5));  //返回值为3,4,5
  6. //alert(arr.slice(3));    //返回值为4,5,6,7,8
  7. alert(arr);               //返回值为1,2,3,4,5,6,7,8

当 slice为负数,则表示倒数计算的位置.

    1. //slice数组的方法
    2. var arr = [1,2,3,4,5,6,7,8,9,10,11];
    3. //alert(arr.slice(-3));      //返回的值为8,9,10  倒数三位数
    4. //alert(arr.slice(-3,-1));   //返回的值为最后倒数的三位数 的倒数第二位  9,10
    5. alert(arr);                 //返回的值为 1,2,3,4,5,6,7,8,9,10,11
上一篇:luogu P2470 [SCOI2007]压缩


下一篇:Shell脚本的条件测试与比较