JavaScript数组知识点小结
2016-12-10 21:26
459 查看
写在前面的话
数组的概念
特点
数组的创建
访问数组的方式
js中的数组是可以动态的改变
数组的遍历
数组常用的方法
转化方法
栈方法
模拟队列
数组的一些其他方法
得到新数组的方法
数组的排序
数组自带的排序方法
数组的检测
二维数组
同一个数组中, 元素的类型不做任何限制。
同一个数组可以存储不同的数据类型
js变量是没有类型的
使用构造函数
1、当用构造函数创建数组对象非的时候,如果只传递了一个整数,那么这个整数表示了要创建的数组的长度,其他情况都是表示数组中初始化的元素。
2、使用构造函数创建数组对象的时候,new可以省略。
数组中每个元素都有一个下标
元素从0 – length-1
2、直接更改length的值,也可以改变数组的长度。
如果更改的length的值小于最初,则会把多余的元素从数组中移除。
稀疏数组
2、for in 可以遍历数组。 主要是用来遍历对象的属性。
3、es5:forEach 每个数组给添加了一个方法,可以去遍历数组中的元素。
forEach:专门去遍历一个数组
匿名函数称之为回调函数
2、join(连接符字符串) //参数就是
push();push的时候,可以一次性的添加多个元素。入栈一个元素,这个元素会成为最后一个元素。方法的返回值:最新的元素个数。
pop();从数组中出栈一个元素。是数组中的最后一个元素,返回值就是出栈的那个元素。
shift:删除队首的元素(下标为0的元素)
unshift:向数组的最前面添加元素(可以多个)
倒置数组中的元素。更改数组本身。
2、查找元素的索引
如果在数组中找不到,则返回-1;
arr.indexOf(item); //返回从前面查找item第一次出现的下标
arr.lasrIndexOf(item); //从后面开始查找item第一次出现的位置
indexOf(item, fromBack): 从第二个参数的位置开向后始查找 item 第一次出现的位置
lastIndexOf(item, fromForward): 从第二个参数的位置开始向前查找 item 第一次出现的位置
arr1.concat(arr2) 把arr2连接到arr1,返回连接后的新数组,注意:不会更改arr1.
2、截取数组
slice(start, end) 不会修改原数组
start:截取的开始位置(包括)
end:结束的位置(不包括),可以省略,省略后表示一直截取到结尾。
start 和 end 是支持 负数的 。 -1 代表最后一个元素。end必须大于start。
3、向数组或从数组中添加或删除元素
splice(index, count); 参数1:开始删除的下标,参数2:删除的个数;返回删除的那些元素。会更改原数组。
插入的时候第二个参数一般设置为0. arr1.splice(1, 0,”指令”, “fengjie”);
替换:用指定的元素去替换 从参数1 开始的 参数2 的arr1.splice(1, 1,”指令”, “fengjie”);//把1的位置删掉,然后再在1的位置添加
相邻的两个元素进行比较,只要碰到前面的大于后面的就进行交换。
2、选择
先选择一个元素最为小的或者最大的,然后再与气体元素进行比较。
数组中的元素都会转成string之后,再按照字母表顺序来排。
arr.sort(function) //function 叫比较函数
Array.isArray(arr); 参数就是要检测的那个数组。结果是true或者false。
在js中只有值传递。
1、简单类型的话,传递的就是那个值的一个copy
2、如果是对象类型,传递的是那个对象的地址值的copy
一维数组中的元素是一维数组的时候,就是二维数组。
数组的概念
特点
数组的创建
访问数组的方式
js中的数组是可以动态的改变
数组的遍历
数组常用的方法
转化方法
栈方法
模拟队列
数组的一些其他方法
得到新数组的方法
数组的排序
数组自带的排序方法
数组的检测
二维数组
写在前面的话
最近有学习一些新东西,但是在学习新东西的同时,对很多基础的知识也是不能忽略的,经常用还好,一旦不怎么常用了,会渐渐生疏,当然,本文的数组是常用的,但是相较于其他强类型的语言来说,JavaScript的数组就太“自由”了,但是注意一点就是万变不离其宗,虽然“自由”很多,但是其本身的语法也会对其有相应的限制(坑多),因此小结了本文,以备后续的查看,复习。当然,文中尚且有不足之处,还请留言提出,以便交流,学习进步。谢谢!数组的概念
数组是指的数据的有序列表。同一个数组中, 元素的类型不做任何限制。
特点
数组的长度可以动态改变同一个数组可以存储不同的数据类型
js变量是没有类型的
数组的创建
数组字面量[数组的元素]使用构造函数
1、当用构造函数创建数组对象非的时候,如果只传递了一个整数,那么这个整数表示了要创建的数组的长度,其他情况都是表示数组中初始化的元素。
var arr3 = new Array(5); console.log(arr3.length);//1
2、使用构造函数创建数组对象的时候,new可以省略。
var arr4 = Array("a","b"); console.log(arr4);
访问数组的方式:
使用数组中元素下标(index)数组中每个元素都有一个下标
元素从0 – length-1
js中的数组是可以动态的改变。
1、可以给最后一个元素赋值,来增加数组的长度。2、直接更改length的值,也可以改变数组的长度。
如果更改的length的值小于最初,则会把多余的元素从数组中移除。
稀疏数组
var arr = [10, 20]; arr[10] = 100; arr[20] = 200;
数组的遍历
1、普通的forfor(var i = 0, len = arr.length; i < len; i++){ arr[i] }
2、for in 可以遍历数组。 主要是用来遍历对象的属性。
for(var i in arr){ //i一定是代表了索引 arr指的是要遍历的元素 console.log(i + " " + arr[i]); }
3、es5:forEach 每个数组给添加了一个方法,可以去遍历数组中的元素。
forEach:专门去遍历一个数组
匿名函数称之为回调函数
arr.forEach(function(element, index){ //参数1:元素 参数2:索引 //代码 });
数组常用的方法
转化方法
1、toString()2、join(连接符字符串) //参数就是
栈方法
栈结构 FILOpush();push的时候,可以一次性的添加多个元素。入栈一个元素,这个元素会成为最后一个元素。方法的返回值:最新的元素个数。
pop();从数组中出栈一个元素。是数组中的最后一个元素,返回值就是出栈的那个元素。
模拟队列
FIFO(first in first out)shift:删除队首的元素(下标为0的元素)
unshift:向数组的最前面添加元素(可以多个)
数组的一些其他方法
1、元素的倒置:reverse倒置数组中的元素。更改数组本身。
2、查找元素的索引
如果在数组中找不到,则返回-1;
arr.indexOf(item); //返回从前面查找item第一次出现的下标
arr.lasrIndexOf(item); //从后面开始查找item第一次出现的位置
indexOf(item, fromBack): 从第二个参数的位置开向后始查找 item 第一次出现的位置
lastIndexOf(item, fromForward): 从第二个参数的位置开始向前查找 item 第一次出现的位置
得到新数组的方法
1、数组的连接arr1.concat(arr2) 把arr2连接到arr1,返回连接后的新数组,注意:不会更改arr1.
2、截取数组
slice(start, end) 不会修改原数组
start:截取的开始位置(包括)
end:结束的位置(不包括),可以省略,省略后表示一直截取到结尾。
start 和 end 是支持 负数的 。 -1 代表最后一个元素。end必须大于start。
3、向数组或从数组中添加或删除元素
splice(index, count); 参数1:开始删除的下标,参数2:删除的个数;返回删除的那些元素。会更改原数组。
插入的时候第二个参数一般设置为0. arr1.splice(1, 0,”指令”, “fengjie”);
替换:用指定的元素去替换 从参数1 开始的 参数2 的arr1.splice(1, 1,”指令”, “fengjie”);//把1的位置删掉,然后再在1的位置添加
数组的排序
1、冒泡相邻的两个元素进行比较,只要碰到前面的大于后面的就进行交换。
var arr = [1, 10, 3, 20, 2, 4, 0, 5, 56, 88]; for(var j = 0; j < arr.length - 1; j++) { //循环次数表示参与排序的元素的个数 for(var i = 0; i < arr.length - 1 - j; i++) { //减1为了保证参与的排序的元素下标不会超过length -1,减j是了避免比较过的元素再参与比较,提高效率 if(arr[i] < arr[i + 1]) {//降序 var temp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = temp; } } } console.log(arr);
2、选择
先选择一个元素最为小的或者最大的,然后再与气体元素进行比较。
var arr = [1, 10, 3, 20, 2, 4, 0, 5, 56, 88]; //选择 效率更高 /*for(var i = 0; i < arr.length - 1; i++) { var minIndex = i;//记录最小的位置的下标 for(var j = i + 1; j < arr.length; j++) { //选择了i为最小的,从i+1开始比较 if(arr[minIndex] > arr[j]) { minIndex = j; //先记录位置 } } //minIndex 就是最小的那个元素 if(minIndex != i) { //比较完一轮后就交换数据 var temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } }*/ //选择 效率更低,比较后直接交换 /*for(var i = 0; i < arr.length - 1; i++){ for(var j = i + 1; j < arr.length; j++){ if(arr[i] > arr[j]){ var temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } }*/ console.log(arr);
数组自带的排序方法
arr.sort(); 默认排序规则是按照字母表顺序来排。数组中的元素都会转成string之后,再按照字母表顺序来排。
arr.sort(function) //function 叫比较函数
arr.sort(function(a, b){ /* 返回值必须是整数: 如果返回值 > 0 就认为 a > b a在b右边 === 0 a === b < 0 a < b a在b左边 */ /* if(a > b){ return 1; }else if(a === b){ return 0; }else{ return -1; } //降序就1变-1,-1变1 */ return a - b;//升序: // return b - a;//降序: });
数组的检测
instanceof:检测某个对象是不是属于某个类型。结果是true或者false。Array.isArray(arr); 参数就是要检测的那个数组。结果是true或者false。
在js中只有值传递。
1、简单类型的话,传递的就是那个值的一个copy
2、如果是对象类型,传递的是那个对象的地址值的copy
二维数组
js中没有真正的二维数组一维数组中的元素是一维数组的时候,就是二维数组。
相关文章推荐
- Javascript的常规数组和关联数组对比小结
- javascript小结:数组
- javascript数组的知识点讲解
- javascript数组去重小结
- javascript数组去重小结
- JQuery 操作Javascript对象和数组的工具函数小结
- javascript进行数组追加方法小结
- 【JavaScript知识点四】JavaScript 数组
- JavaScript常用字符串与数组扩展函数小结
- Javascript的常规数组和关联数组对比小结
- javascript数组操作方法小结和3个属性详细介绍
- 每天一篇javascript学习小结(Array数组)
- 向JavaScript的数组中添加元素的方法小结
- javascript进行数组追加方法小结
- JavaScript知识点之“面向对象小结”
- Javascript数组小结
- JavaScript常用数组算法小结
- JavaScript中数组小结