您的位置:首页 > Web前端 > JavaScript

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个整数排序效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: