数组
数组的概念
- 数组是值的有序集合
- 数组中的每个值 称之为 元素
- 每个元素可以是任意数据类型的值
- 每个元素都有索引(下标)
- 元素的索引从0开始,按照顺序递增。 元素最大的索引 2^32-2
创建数组
直接量
[]
var arr=[]; var arr=["string",234,true,function(){},demo,demo(),brr[]]; 数组的元素可以是任意类型
构造函方式
new Array()
也可以省略newvar arr=new Array(); var arr=new Array(5);长度为5; var arr=new Array(1,3,"hello"); 直接传参
读写数组中的元素
- 数组名[索引]
稀疏数组
- js数组的索引是连续的
- 没有连续的给元素赋值 , 没有赋值的元素会自动赋值 undefined
添加和删除 数组的元素
- 添加数组元素
- 指定索引来添加元素
- 把数组长度当做新元素的索引
arr[arr.length] = value
- 在数组的最后添加元素 push()
arr.push()
- 在数组的前面添加元素 unshift()
arr.unshift()
- 在数数组的任意位置添加元素 splice(index, 0, value)
- 删除数组的元素
- 改变数组的length属性
arr.length -= 1; arr.length -= 2
- 删除最后面的一个元素 pop()
- 删除数组的第一个元素 shift()
- 删除指定位置的指定个数的元素 splice(index, length)
- delete arr[2];删除元素(位置还在),使其变成undefined;
- 改变数组的length属性
数组遍历
- for 循环
for in
for(var i in arr){ console.log(arr[i]); }
多维数组
数组的方法
- join([间隔符号]) 把数组的每个元素拼接成一个字符串 返回字符串
- slice(start, end) 截取数组中的一部分, 返回一个新数组
- concat(arr, arr....) 合并数组. 返回一个新数组
- toString() 把数组转换为字符串
- reverse() 翻转数组 副作用
- sort() 排序 副作用
- push() pop() 副作用
- shift() unshift() 副作用
类数组对象
- arguments
Elementcollection 元素的集合
document.getELementsByTagName() element.getElementsByTagName()
作为数组的字符串
- 字符串具有部分数组特性
- 字符串也有length属性 获取字符串的长度
- 也可以通过[索引值] 取出字符串中的一个字符
### 稀疏数组变为不稀疏
法一:
<script>
function xiShu(a){
var brr=[];
console.log(arr);
for(var i=0;i<arr.length;i++){
if(arr[i]!=undefined){
brr[brr.length]=arr[i];
}
}
console.log(brr);
}
xiShu(arr=[0,1,2, ,4,5, , ,8]);
</script>
法二:
<script>
console.log("");
function xiShu(a){
console.log(arr);
for(var i=0;i<arr.length;i++){
if(arr[i]==undefined){
// brr[brr.length]=arr[i];
arr.splice(i,1);
i--;
}
}
console.log(arr);
}
xiShu(arr=[0,1,2, ,4,5, , , ,8]);
</script>
数组去重
<script>
function quChong(arr){
var arr;
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]==arr[j]){
console.log("重复的数:"+arr[j]+ "它的位置:"+j);
i--;
//删除重复的数
arr.splice(j,1);
//输出删除重复的数之后的数组
// console.log(brr);
}
}
}
console.log(arr);
}
quChong(arr=[1,1,3,5,6,43,45,6,"nihao","pwl",7,6,7,45,45,45,"lw"]);
</script>