JS数据结构(1)——数组
数据结构就是 在计算机中,存储和组织数据的方式。
在编码中,我们会用到数据结构,其中数组是最简单的数据结构。
数组的创建
- 使用Array构造函数
var arr1 = new Array(); //创建空数组
var arr2 = new Array(1,2,3); //创建元素为1,2,3的数组
var arr3 = new Array(5); //创建长度为5的数组
使用Array构造函数,需要使用new
关键字。
- 使用方括号[]
var arr1 = [] ; //创建一个空数组
var arr2 = [4,5,6]; //创建元素为4,5,6的数组
判断是否是数组
使用Array.isArray(arr)来判断
Array.isArray(arr1);
结果输出为: true
判断数组的长度
数组有一个属性length,可以用来获取数组的长度。
var arr2 = [4,5,6];
var length = arr2.length;
结果输出为: 3
遍历数组
- 方式一:for循环遍历数组
for(var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
- 方式二:forEach遍历数组
forEach()在原数组的基础上改变,没有返回值,在function内进行操作
arr.forEach( function (i) {
console.log(i);
});
- 方式三:map遍历数组
map()会返回一个新数组,原数组不会改变。
var arr = [1,2,3];
var arr1 = arr.map(function (i) {
return i * i;
});
结果:arr1 = [1,4,9]
- 方式四:filter遍历数组
过滤筛选,返回一个新数组,原数组不会改变。
var arr = [1,2,3,4,5,6,7,8,9];
var arr1 = arr.filter(function(i) {
return i%2==0;
});
结果:arr1 = [2,4,6,8]
- 方式五:some遍历检测数组中是否有元素满足条件
如果有一个元素满足条件,则返回true,剩下的元素不会再进行检测
如果全部遍历结束,没有满足条件的元素,则返回false
var arr = [10,17,12,11];
arr.some(function(i){
return i >15;
);
结果:true
- 方式六:every遍历检测数组是否所有元素都满足条件
如果有一个元素不满足条件,则返回false,剩下的元素不会再进行检测
如果全部遍历结束,所有元素都满足条件,则返回true
var arr = [17,10,18,15];
arr.every(function(i){
return i > 11;
});
结果:false
- 方法七:find遍历返回通过测试的数组的第一个元素的值
当数组中的元素满足条件时,find()返回符合条件的这个元素,剩下的元素不会再进行检测
如果没有符合条件的元素则返回undefined
var arr = [10,12,15,19,111];
arr.find(function(i){
return i > 14;
});
结果:15
数组的增删改查
1.添加元素
- 方式一:push()
向数组末位插入一个元素
var arr = [1,2,3,4,5,6];
arr.push(7);
结果:arr = [1,2,3,4,5,6,7];
- 方式二:unshift()
向数组首位插入一个元素
var arr = [1,2,3,4,5,6];
arr.unshift(0);
结果:arr = [0,1,2,3,4,5,6];
- 方式三:配合length使用
向数组末位插入一个元素
var arr = [1,2,3,4,5,6];
ar[arr.length] = 8;
结果:arr = [1,2,3,4,5,6,8];
2.删除元素
- 方式一:pop()
删除数组末位一个元素
var arr = [1,2,3,4,5,6];
var number = arr.pop();
结果:arr = [1,2,3,4,5]; number = 6;
- 方式二:shift()
var arr = [1,2,3,4,5,6];
var number = arr.shift();
结果:arr = [2,3,4,5,6]; number = 1;
3.替换元素
splice()方法
splice(index,length,new_arr)
index:从第几个元素开始替换
length:需要替换的元素的个数
new_arr:替换出来的元素存储在new_arr里
使用splice()进行替换:
var arr = [1,2,3,4,5,6];
var arr1 = arr.splice(0,2,9);
结果:arr = [9,3,4,5,6]; arr1 = [1,2];
使用splice()进行删除:
var arr = [1,2,3,4,5,6];
arr.splice(2,3);
结果:arr = [1,2,6]; arr1 = [3,4,5];
使用splice()进行插入:
var arr = [1,2,3,4,5,6];
arr.splice(2,0,10,11,12);
结果:arr = [1,2,10,11,12,3,,4,5,6];
4.查找运算
方式一:indexOf()
查找某个字符串在要查询的字符串中首次出现的位置的索引值
var arr = [1,2,3,4,3,2,1];
var n = arr.indexOf(3);
结果: n = 2;
- 方式二:lastIndexOf()
查找某个字符串在要查询的字符串中最后一个出现的索引值
var arr = [1,2,3,4,3,2,1];
var n = arr.lastIndexOf(3);
结果:n = 4;
注意:如果某字符串中只有一个要查询的字符串,那么lastIndexOf和indexOf结果是一样的。
数组的其他操作
1.反序reverse()
var arr = [1,2,3,4];
arr.reverse();
结果:arr = [4,3,2,1];
2.排序sort()
按照字典顺序对元素进行排序
var arr = [8,5,6,2,3,1];
arr.sort();
结果:arr = [1,2,3,5,6,8];
3.连接concat()
连接两个或者多个数组,并且返回该数组。
var arr1 = [1,2,3];
var arr2 = [4,5,6];
arr1.concat(arr2);
结果:arr1 = [1,2,3,4,5,6];
4.数组转换为字符串
- 方式一:join()
var arr = [1,2,3,4,5];
arr.join();
结果为:"1,2,3,4,5"
- 方式二:toString()
var arr = ["a","b","c","d"];
arr.toString();
结果为:“a,b,c,d”