网站首页 > 知识剖析 正文
数组是有序的,但每个元素可以保存不同类型的数据,同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
猜你喜欢
- 2024-11-10 PHP数组学习笔记(1) php数组有哪几种类型
- 2024-11-10 Rust语言入门教程 数组和切片 rust语言例子
- 2024-11-10 Array.from详解: 语法、功能与应用场景
- 2024-11-10 帮你精通JS:解析与盘点数组array的5类22种方法
- 2024-11-10 10 个实用的 JS 技巧 js常用方法大全
- 2024-11-10 WordPress 内置的数组处理相关函数大全
- 2024-11-10 3分钟短文 | PHP获取函数的代码片段,唯有反射最高效
- 2024-11-10 JS 中的类数组对象如何转换为数组?
- 2024-11-10 Go 中的循环是如何转为汇编的?看完你懂了吗?
- 2024-11-10 Golang,切片,make函数,通过数组产生切片,复制及排序,案例
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)