1、数组的创建

1 var arr1 = new Array(); //创建一个数组
2 var arr2 = new Array(5); //创建一个数组并指定长度,注意不是上限,是长度
3 var arr3 = new Array(1,3,5,7,9); //创建一个数组并赋值
4 var arr4 = [2,4,6,8,10];    

要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。

 

2、数组的元素的访问

1 var testGetArrValue=arrayObj[1]; //获取数组的元素值
2 arrayObj[1]= "这是新值"; //给数组元素赋予新的值

 

3、数组元素的字符串化

arrayObj.join(separator); 返回字符串,这个字符串将数组的每一个元素值连接在一起,中间用 separator 隔开。

1 var arr = new Array(1,3,5,7,9);
2 arr.join("-");   //输出1-3-5-7-9

 

3、数组元素的添加

arrayObj. push([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组结尾,并返回数组新长度

arrayObj.unshift([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度

arrayObj.splice(insertPos,0,[item1[, item2[, . . . [,itemN]]]]);//将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回""。

 

1 var arr = new Array(1,3,5,7,9);
2 document.writeln(arr.join("-"));   //输出1-3-5-7-9
3 alert(arr.push(11)); //在末尾添加
4 document.writeln(arr.join("-"));   //输出1-3-5-7-9-11
5 arr.unshift(0); //在头部添加
6 document.writeln(arr.join("-"));   //输出0-1-3-5-7-9-11
7 arr.splice(2,0,2,4);  //在位置为2之后插入数据2和4
8 document.writeln(arr.join("-"));   //输出0-1-2-4-3-5-7-9-11

 

 

4、splice用法

javascript 中的 splice 方法很强大,它可以用于插入、删除或替换数组的元素。
下面来一一介绍!

  1. 删除:用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数)
  2. 插入:向数组指定位置插入任意项元素。三个参数,第一个参数(其实位置),第二个参数(0),第三个参数(插入的项)
  3. 替换:向数组指定位置插入任意项元素,同时删除任意数量的项,三个参数。第一个参数(起始位置),第二个参数(删除的项数),第三个参数(插入任意数量的项)

splice方法返回一个数组,该数组包含删除的项目,如果没有删除的项目,则返回一个空数组

 1 var lang = ["php","java","javascript"];
 2 //删除
 3 var removed = lang.splice(1,1);
 4 alert(lang); //php,javascript
 5 alert(removed); //java ,返回删除的项
 6 //插入
 7 var insert = lang.splice(0,0,"asp"); //从第0个位置开始插入
 8 alert(insert); //返回空数组
 9 alert(lang); //asp,php,javascript
10 //替换
11 var replace = lang.splice(1,1,"c#","ruby"); //删除一项,插入两项
12 alert(lang); //asp,c#,ruby,javascript
13 alert(replace); //php,返回删除的项

 

5、数组元素的删除

arrayObj.pop(); //移除最后一个元素并返回该元素值

arrayObj.shift(); //移除最前一个元素并返回该元素值,数组中元素自动前移

arrayObj.splice(deletePos,deleteCount); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素

 

6、数组的截取和合并

arrayObj.slice(start, [end]); //以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素

arrayObj.concat([item1[, item2[, . . . [,itemN]]]]); //将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组

 

7、数组的拷贝

arrayObj.slice(0); //返回数组的拷贝数组,注意是一个新的数组,不是指向

arrayObj.concat(); //返回数组的拷贝数组,注意是一个新的数组,不是指向

 

8、数组元素的排序

arrayObj.reverse(); //反转元素(最前的排到最后、最后的排到最前),返回数组地址

arrayObj.sort(); //对数组元素排序,返回数组地址

下面看看sort方法:

 

1 var arr=[3,1,4,10,5];
2 alert(arr) //输出 3,1,4,10,5
3 
4 arr.sort();
5 alert(arr); //输出1,10,3,4,5

 

这里对数组排序后的结果,并没有按照数字大小进行排序,将数组元素看成一个字符串,每次取字符串的一位进行比较。 如果要按照数字的自然大小进行排序,那么需要自定义排序方式

 1 var arr=[3,1,4,10,5];
 2         
 3 function compare(val1,val2){
 4     if(val1<val2){
 5         return -1;
 6     }else if(val1>val2){
 7         return 1;
 8     }else {
 9         return 0;
10     }
11 }
12             
13 arr.sort(compare);
14             
15 alert(arr);  //输出结果:1,3,4,5,10

这是升序的方式,降序方法类似

 

filter():  

 语法:

var filteredArray = array.filter(callback[, thisObject]);

参数说明:

callback: 要对每个数组元素执行的回调函数。
thisObject : 在执行回调函数时定义的this对象。

//过滤掉小于 10 的数组元素:

//代码:
function isBigEnough(element, index, array) {
    return (element >= 10);
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// 12, 130, 44
//结果:[12, 5, 8, 130, 44].filter(isBigEnough) : 12, 130, 44 

功能说明:

对数组中的每个元素都执行一次指定的函数(callback),并且创建一个新的数组,该数组元素是所有回调函数执行时返回值为 true 的原数组元素。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略,同时,新创建的数组也不会包含这些元素。

回调函数可以有三个参数:当前元素,当前元素的索引和当前的数组对象。

如参数 thisObject 被传递进来,它将被当做回调函数(callback)内部的 this 对象,如果没有传递或者为null,那么将会使用全局对象。

filter 不会改变原有数组,记住:只有在回调函数执行前传入的数组元素才有效,在回调函数开始执行后才添加的元素将被忽略,而在回调函数开始执行到最后一个元素这一期间,数组元素被删除或者被更改的,将以回调函数访问到该元素的时间为准,被删除的元素将被忽略。

map():

//将所有的数组元素转换为大写:

var strings = ["hello", "Array", "WORLD"];
function makeUpperCase(v)
{
    return v.toUpperCase();
}
var uppers = strings.map(makeUpperCase);
// uppers is now ["HELLO", "ARRAY", "WORLD"]
// strings is unchanged
//结果:["hello", "Array", "WORLD"].map(makeUpperCase) : HELLO, ARRAY, WORLD 

some():

对数组中的每个元素都执行一次指定的函数(callback),直到此函数返回 true,如果发现这个元素,some 将返回 true,如果回调函数对每个元素执行后都返回 false ,some 将返回 false。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略。

//检查是否有数组元素大于等于10:

function isBigEnough(element, index, array) {
    return (element >= 10);
}
var passed = [2, 5, 8, 1, 4].some(isBigEnough);
// passed is false
passed = [12, 5, 8, 1, 4].some(isBigEnough);
// passed is true
//结果:
//[2, 5, 8, 1, 4].some(isBigEnough) : false 
//[12, 5, 8, 1, 4].some(isBigEnough) : true 

every():

对数组中的每个元素都执行一次指定的函数(callback),直到此函数返回 false,如果发现这个元素,every 将返回 false,如果回调函数对每个元素执行后都返回 true ,every 将返回 true。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略

//测试是否所有数组元素都大于等于10:

function isBigEnough(element, index, array) {
    return (element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough);
// passed is false
passed = [12, 54, 18, 130, 44].every(isBigEnough);
// passed is true
//结果:
//[12, 5, 8, 130, 44].every(isBigEnough) 返回 : false 
//[12, 54, 18, 130, 44].every(isBigEnough) 返回 : true 

forEach():

//打印数组内容:

function printElt(element, index, array) {
    document.writeln("[" + index + "] is " + element + "<br />");
}
[2, 5, 9].forEach(printElt);
// Prints:
// [0] is 2
// [1] is 5
// [2] is 9
//结果:
//[0] is 2
//[1] is 5
//[2] is 9

lastIndexOf():

语法

var index = array.lastIndexOf(searchElement[, fromIndex]);

参数说明

searchElement: 要搜索的元素

fromIndex : 开始搜索的位置,默认为数组的长度(length),在这样的情况下,将搜索所有的数组元素。搜索是反方向进行的。

功能说明

比较 searchElement 和数组的每个元素是否绝对一致(===),当有元素符合条件时,返回当前元素的索引。如果没有发现,就直接返回 -1 。

//查找符合条件的元素:

var array = [2, 5, 9, 2];
var index = array.lastIndexOf(2);
// index is 3
index = array.lastIndexOf(7);
// index is -1
index = array.lastIndexOf(2, 3);
// index is 3
index = array.lastIndexOf(2, 2);
// index is 0
index = array.lastIndexOf(2, -2);
// index is 0
index = array.lastIndexOf(2, -1);
// index is 3
//结果:
//[2, 5, 9, 2].lastIndexOf(2) : 3 
//[2, 5, 9, 2].lastIndexOf(7) : -1 
//[2, 5, 9, 2].lastIndexOf(2, 3) : 3 
//[2, 5, 9, 2].lastIndexOf(2, 2) : 0 
//[2, 5, 9, 2].lastIndexOf(2, -2) : 0 
//[2, 5, 9, 2].lastIndexOf(2, -1) : 3 

indexOf():

功能与lastIndexOf()一样,搜索是正向进行的

//查找符合条件的元素:

var array = [2, 5, 9];
var index = array.indexOf(2);
// index is 0
index = array.indexOf(7);
// index is -1
//结果:
//[2, 5, 9].indexOf(2) : 0 
//[2, 5, 9].indexOf(7) : -1 

 

  

 
 
 
 posted on 2016-07-27 08:43  Just_Do  阅读(303)  评论(0编辑  收藏  举报