您的位置 首页 php

javascript自学笔记:Array类型1

数组是有序的,但每个元素可以保存不同类型的数据,同python。

1、创建

 // 创建一个动态长度的新数组
var colors = new Array();// 创建一个定长的数组
var colors = new Array(20);// 创建一个包含3个字符串的数组
var colors = new Array("red","blue","green");// 以字面量表示法创建数组
var colors = ["red","blue","green"];// 创建空数组
var colors = [];  

注:使用字面量表示法创建数组时,不会调用Array构造函数

2、读取与添加元素

 // 读取,使用索引读取,基于0
var colors = ["red","blue","green"];
alert(colors[0]);// 修改已有值

colors[2] = "black";// 新增,由于原数组没有[4],所以是新增
colors[4] = "brown";// 由于数组基数3没有值,显示出来就是red,blue,black,,brown
alert(colors);// 中间空值的也要算长度,这里显示长度为5
alert(colors.length);// length属性不是只读的,可以通过设置length来改变数组长度
colors.length = 2;// red,blue
alert(colors);// 利用length方便的添加元素
colors[colors.length] = "black";  

5.2.1 检测数组

1、instanceof方法

 if (colors instanceof Array){
  alert("是数组");
} else {
  alert("不是数组");
}  

2、Array.isArray()

 if (Array.isArray(colors)){
  alert("是数组");
} else {
  alert("不是数组");
  

  

5.2.2 转换方法

 alert(colors.toLocaleString())  // 字符串 "red,blue,green"
alert(colors.toString())        // 字符串 "red,blue,green"
alert(colors.valueOf())         // Object ["red","blue","green"]
alert(colors)                   // 同toString// 使用join方法输出

alert(colors.join("||"))        // red||blue||green  

5.2.3 栈方法

LIFO-Last In First Out 后进先出

 // 读取,使用索引读取,基于0
var colors = ["red","blue","green"];// 可以一次压入多个数据,添加到数组尾部

var count = colors.push("black","brown");// 返回数组长度

alert(count);
alert(colors);// 弹出最尾部的一个元素

var newItem = colors.pop();
alert(newItem);
alert(colors.length);  

5.2.4 队列方法

 var colors = new Array();// 从数组头部添加多个元素到数组

colors.unshift("red","green");
alert(colors);      // red,green// 从头部移除一个元素

colors.shift();     // red  

5.2.5 重排序方法

 var colors = [1,2,3,4,5];// 反转顺序

colors.reverse();
alert(colors);

var colors = [0,1,5,10,15];// 排序,默认为升序,但每个元素用了toString()方法

colors.sort();
alert(colors);  // 0,1,10,15,5  

升序排列:

 function compare(value1,value2){
  if (value1 < value2){
    return -1;
  } else if (value1 > value2){
    return 1;
  } else {
    return 0;
  }}
var colors = [0,1,5,10,15];// 排序,默认为升序,但每个元素用了toString()方法

colors.sort(compare);
alert(colors);  // 0,1,5,10,15  

如果将return -1改为return 1,则能实现降序。

如果将函数改成这样会更精简:

 function compare(value1,value2){
   return value1-value2;   // 升序
   return value2-value1;   // 降序
}  

5.2.6 操作方法

扩展数组:concat()

格式:Arr.concat(“yellow”,[“black”,”brown”]);

数组切片:slice(参数1,参数2)

如果只有参数1,则是取参数1开始的元素到最后元素,组成新的数组,原数组不变。

有两个参数时,取第一个参数到第二个参数-1的元素,组成新的数组。

 var arr1 = new Array(0,1,2,3,4,5,6);// 只一个参数时,取该基数至最后的元素,组成新的数组

var arr2 = arr1.slice(2);
alert(arr2);    // 2,3,4,5,6// 两个参数时,取开始基数至结束基数-1的元素

var arr3 = arr1.slice(2,4);
alert(arr3);    // 2,3

// 如果参数是负数,则表示从后往前数

var arr3 = arr1.slice(-3,-1);
alert(arr3);    // 4,5

splice()

// 删除从0开始的2个元素
arr1.splice(0,2);   // 2,3,4,5,6
alert(arr1);

// 从序号2的位置,删除0个,并插入新的元素7,8,9
arr1.splice(2,0,7,8,9);
alert(arr1);    // 0,1,7,8,9,2,3,4,5,6

// 从序号2的位置,删除3个,并插入3个元素
var arr2 = arr1.splice(2,3,7,8,9);
alert(arr1);    // 0,1,7,8,9,5,6

// 使用splice后返回的是被删除的元素,如果没有删除,则为空

alert(arr2);    // 2,3,4  

总结:slice不影响原数组,splice会影响原数组

5.2.7 位置方法

 indexOf(元素,位置)               // 从前往后找

lastIndexOf(元素,位置)                 // 从后往前找  

如果有找到,得到位置;没找到则为-1;使用全等于===进行对比。

 var arr1 = new Array(1,2,3,4,5,4,3,2,1);
alert(arr1.indexOf(4));     // 序号为3
alert(arr1.indexOf(4,4));   // 序号为5

var arr1 = new Array(1,2,3,4,5,4,3,2,1);
alert(arr1.lastIndexOf(4));     // 序号为5
alert(arr1.lastIndexOf(4,4));   // 序号为3  

文章来源:智云一二三科技

文章标题:javascript自学笔记:Array类型1

文章地址:https://www.zhihuclub.com/79218.shtml

关于作者: 智云科技

热门文章

网站地图