JavaScript基础_06数组及数组方法
2016-10-26 23:34
204 查看
1.数组方法
1.1 数组的写法1)字面量写法
var arr = [1,2,3,4,5];
2)构造函数写法
var arr1 = new Array(2);//创建一个长度为2的一个数组对象 var arr3 = new Array();//创建一个空数组 var arr4 = new Array("helloworld","world");//["helloworld","world"]; var arr5 = new Array(1,2);//[1,2];
3)不加new关键字写法
var arr2 = Array(2);//创建一个长度为2的一个数组对象
注意:如果指定了数组元素的个数,而没有指定数组具体的元素,则打印的每一个元素都是undefined(没有任何值),但是可以取得到length属性,取不到键名,例如:
var arr6 = new Array(4); arr6[1];//undefined (2 in arr6); //false arr6.length; //4
1.2 数组方法
1)作用于Array上面的方法
Array.isArray():来判断一个值是否为数组,返回值(true或者false)
var array1 = [1,2,3,4,5,6]; console.log(typeof array1);//object console.log(Array.isArray(array1));//true
注意:typeof只能确定值是属于6大数据类型中的某一类型,不能具体确定该值到底属于对象中的数组还是函数等类型
2)数组方法实例
作用于自己创建的数组变量上的方法
2.1)valueOf()方法:返回数组本身
var array2 = ["string","hello",1,2,3]; var res = array2.valueOf();//返回的是数组本身(数组对象) console.log(res);
2.2) push()方法,向数组末尾添加一个或多个元素,返回值一定是添加新元素后的数组长度,且原有数组发生了改变
var a = [1,2,3,4]; a.push(1,2,3,4,5,"hello",{},true);//添加多个 console.log(a);
2.3)pop()方法:用于删除数组的最后一个元素,返回值是返回删除的这个元素,该数组也改变了原有的数组
var a3 =[1,2,3]; var res4 = a3.pop();//[1,2]; res4 = 3; console.log(res4); var a4 = []; var res5 = a4.pop();//res5 = undefined console.log(res5);
2.4) join()方法,该方法以join中参数来分割字符串,将数组所有数据成员组成一个字符串返回,如果不提供参数,默认以逗号分割
var a5 = [1,2,3,4];
var res6 = a5.join("|");//"1|2|3|4|5"
console.log(res6);
2.5) concat()方法;将多个数组的合并,返回合并后的数组,原有数组不变
var a8 = [1,2,3]; var a9 = [4,5,6,7]; var a10 = a8.concat(a9); var a11 =a8. concat ( [4,5],[6,7]); //等效于a8.concat(a9); console.log(a10);//[1,2,3,4,5,6,7] console.log(a8);//[1,2,3] console.log(a11);
2.6) shift()方法:用于删除数组第一个元素,返回值为删除的这个元素,该方法会改变原有方法
var a11 = [1,2,3]; a11.shift();//[2,3];
2.7) unshift()方法:向数组的第一个位置添加一个或多个元素,并返回添加新元素后的数组长度,同样会改变原有数组
var a13 = [1,2,3,4,5]; a13.unshift("hello");//a13=["hello",1,2,3,4,5];
2.8)reverse():用于颠倒数组中元素的顺序,返回值:改变后的数组.改变了原有的数组.
var a16 = [1,2,3,4]; a16.reverse(); console.log(a16);
2.9) slice()方法:提取原数组的一部分,返回一个新数组,原数组不变, slice()中有两个参数,第一个参数起始位置(从0开始),第二个参数是终止位置(该位置元素不包含).如果省略第二个参数,从开始返回原数组的最后一个元素.
var a17 = [1,2,3,4,5];
var a18 = a17.slice(0,2);//[1,2];
console.log(a18);
2.10)splice()方法:用于删除数组的一部分元素,返回值:返回被删除的元素数组.删除同时还可以添加元素.该方法也改变了原有的数组。
语法:
splice(start_index,del_count,add_elment1,add_elment1,...);
第一个参数:删除元素的起始位置;
第二个参数:从起始位置(包括起始位置)删除元素的个数;
第二个以后的参数:要添加的元素
var a21 = [1,2,3,4,5,6,7];
a21.splice(2,1,"ass","awe");//[1,2,"ass","awe",4,5,6,7]
console.log(a21);
2.11)sort()方法:对数组进行排序,按从小到大来排序
['a','c','b','d'].sort();//['a','b','c','d']
2.12)forEach()方法,遍历数组的所有成员,执行某种操作,没有返回值
var els = [11,22,33,44,55]; els.forEach(function(element,index,array){ console.log("element==>"+element); console.log("index==>"+index); console.log("array==>"+array); });
注意:
forEach()中的参数是函数
第一个参数:具体遍历的元素11,12,...
第二个参数:元素索引 参数省略
第三个参数:原数组 参数可省略
2.13)filter()方法:过滤函数,里面参数也是个函数,返回值:返回符合参数条件所有元素组成的一个数组
var els2 = [1,2,3,4,5,6]; var res100 = els2.filter(function(element,index,array){ return index%2===0; }); console.log(res100);
注意:
第一个参数:具体遍历的元素11,12,...
第二个参数:元素索引 参数省略
第三个参数:原数组 参数可省略
2. 递归
2.1 递归算法1)定义
在函数或子过程的内部,直接或者间接地调用自己的算法。
2)特点
递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。
递归算法解决问题的特点:
(1) 递归就是在过程或函数里调用自身。
(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
(3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。
(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。
3)递归算法的要求
递归算法所体现的“重复”一般有三个要求:
(1)是每次调用在规模上都有所缩小(通常是减半);
(2)是相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入);
(3)是在问题的规模极小时必须用直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模未达到直接解答的大小为条件),无条件递归调用将会成为死循环而不能正常结束。
2.2 递归函数
递归函数是一种直接或间接调用自己的一个过程,使用递归函数一定要有一个明确递归结束条件作为递归出口,另外执行效率低下也是递归的一个缺点。
例如
function f(n){ return n>1?n*f(n-1):1; } f(4);// f(4)= 4*f(3)=4*3*f(2)=4*3*2*f(1)=4*3*2*1=24
3. Math函数
1)绝对值函数:Math.abs(值)Math.abs(-200);//200
2)返回几个数中的最大数或者最小数,参数只能放基本数据类型(数字类型)
Math.max(1,2,3,4);//4
Math.min(1,2,3,4);//1
3)Math.floor()取小于该参数的最大整数 返回小于该参数的最大整数
Math.floor(3.4);//3
Math.floor(-3.4);//-4
4)Math.ceil()取大于该参数的最小整数
Math.ceil(3.2);//4
Math.ceil(-3.2);//-3
5)返回小数的整数部分函数
parseInt(3.2);//3
6)四舍五入函数,Math.round(),返回的是整数
Math.round(3.5);//4
7)Math.pow(x,y);//第一个参数:底数;第二个参数:指数
Math.pow(2,3);// 例如2的3次方等于8
8)开方函数 Math.sqrt();
Math.sqrt(4);//4开方等于2
9)随机函数 Math.random():返回0到1之间的随机数,可能等于0,但是一定小于1
Math.random()*(max-min)+min;//产生min-max之间的一个随机数,带小数部分
举例说明:随机产生9个随机整数,随机数的范围10-45之间,对产生的随机数进行从大到小排序
</pre><pre name="code" class="html">//产生9个随机整数 var arr = []; for (var i = 0;i < 9;i++) { arr[i] = parseInt( Math.random()*(45-10)+10); } //对这9个整数“冒泡法”排序,每轮遍历(j循环)中依次(k循环)两两相邻比较,若键值小的比键值大的元素大,则相互调换位置 for (var j = 0;j < arr.length;j++) { for (var k = 0;k < arr.length-j-1;k++) { if(arr[k]<arr[k+1]){ var temp = arr[k]; arr[k] = arr[k+1]; arr[k+1] = temp; } } } console.log(arr);//后台输出
以上代码某一次随机产生的9个整数排序效果如下:
相关文章推荐
- JavaScript之基础-8 JavaScript 数组(创建、访问、常用方法、二维数组)
- javascript数组基础和数组方法的各种使用
- JavaScript基础——数组方法使用
- Acticle 5:javascript数组:数组基础及数组方法的各种使用
- JavaScript基础进阶之数组方法总结
- javascript基础笔记 数组对象当中的栈方法与对列方法
- JavaScript基础进阶之数组方法总结(推荐)
- 06 JavaScript基础之--数组案例(上)
- JavaScript语法基础:数组的常用方法详解
- JavaScript基础知识——数组遍历的方法
- JavaScript基础随笔 push()方法推入数组末尾
- JavaScript 基础(六) 数组方法 闭包
- JavaScript基础(基本语法:变量、语句、数组、函数、对象、全局方法以及js与java不同,js与html关联)
- javascript基础笔记 数组对象当中的栈方法与对列方法
- JavaScript 数组的 uniq 方法
- javascript的数组使用方法
- Javascript 更新 JavaScript 数组的 uniq 方法
- Javascript数组常用方法[包含MS AJAX.NET的prototype扩展方法]示例
- Javascript数组常用方法[包含MS AJAX.NET的prototype扩展方法]示例
- Javascript数组对象的方法和属性