码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript总结—数组

时间:2016-01-17 20:20:11      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

Array类型

ECMAScript数组的每一项可以保存任何类型的数据。

创建数组的两种方式

(1)使用Array()构造函数

var colors = new Array(20);

var colors = new Array("red","blue","green");

(2)数组字面量表示法

var colors = ["red","blue","green"];

修改、新增

var colors = ["red","blue","green"]

colors[2] = "black"; //修改

colors[3] = "brown"  //新增

属性

(1)constructor:

定义和用法

constructor 属性返回对创建此对象的数组函数的引用。

语法

object.constructor

实例

例子 1

在本例中,我们将展示如何使用 constructor 属性:

<script type="text/javascript">
var test=new Array();
if (test.constructor==Array)
{
    document.write("This is an Array");
}
</script>

(2)length:保存数组的项数

例:

var colors = ["red","blue","green"];

alert(colors.length);      //3

(3)prototype 属性使您有能力向对象添加属性和方法。

语法

object.prototype.name=value

实例

在本例中,我们将展示如何使用 prototype 属性来向对象添加属性:

<script type="text/javascript">
function employee(name,job,born)
{
    this.name=name;
    this.job=job;
    this.born=born;
}
var bill=new employee("Bill Gates","Engineer",1985);
employee.prototype.salary=null;
bill.salary=20000;
document.write(bill.salary);
</script>

检测数组

(1) if (value instanceof Array) {

    //对数组执行某些操作

}

(2)if (Array.isArray(value)) {

    //对数组执行某些操作 

}

转换方法:

(1)toString();    把数组转换为字符串,并返回结果。

例:var arr = [12,"123",45,"old"];

console.log(arr.toString());

12,123,45,old

(2)valueOf();     返回数组对象的原始值

例子:

var arr = [12,"123",45,"old"];

console.log(arr.valueOf());

[12, "123", 45, "old"]

(3)toLocaleString();    把数组转换为本地数组,并返回结果。

<script type="text/javascript">
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
document.write(arr.toLocaleString())
</script>
George, John, Thomas

(4)join();    把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

例:var colors = ["red","blue","green"];

alert (color.join("||"));

var arr = [12,"old",14,"young"];

console.log(arr.join(||));

12||old||14||young

栈方法:LIFO(last-in-fisft-out)

插入和移除数据,只发生在栈的顶部

(1)push() 可以接收任意数量的参数,把它们逐个添加到数组的末尾,并返回修改后数组的长度

例:

var arr = [];

arr.push(1);// 返回数组长度 1

arr;// [1]

arr.push(2,3);

arr;// [1,2,3]

(2)pop() 从数组末尾移除最后一项,并返回移除的项

var arr = [1, 2, 3];

arr.pop();// 返回 3

arr;// [1,2]

队列方法:FIFO(first-in-first-out)

队列列表的尾端添加项,从列表的前端移除项

(1)push() 可以接收任意数量的参数,把它们逐个添加到数组的末尾

(2)shift() 移除数组的第一个项并返回该项

var arr = [1, 2, 3];

arr.shift();// 返回 1

arr;// [2,3]

 

排序方法:

(1)reverse(): 反转数组的顺序

var arr = [1, 2, 3];

arr.reverse();// [3, 2, 1]

arr;// [3, 2, 1]

(2)sort :按升序顺序排列数组

功能:对数组中元素进行排序

         语法:sort([sortby])

         参数:

                   如果没有指定sortby参数,默认排序是按照字母的先后顺序排序的;

                   sortby是一个函数名,这个函数规定元素的排序规则

arr.sort(orderby); //将函数的地址传给sort方法

function orderby(a,b)

{

         return a-b;   //对数值大小进行排序

}

a-b的结果:

a-b >0  返回大于0的值

a-b = 0  返回等于0的值 

a-b < 0  返回小于0的值

按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数:

<script type="text/javascript">
function sortNumber(a,b)
{
    return a - b
}
var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"
document.write(arr + "<br />")
document.write(arr.sort(sortNumber));
</script>

连接方法:

concat():方法用于连接两个或多个数组

<script type="text/javascript">
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
 
var arr2 = new Array(3)
arr2[0] = "James"
arr2[1] = "Adrew"
arr2[2] = "Martin"
 
document.write(arr.concat(arr2))
 
</script>
结果
George,John,Thomas,James,Adrew,Martin

 

获取子数组方法:

slice():从某个已有的数组返回选定的元素

arrayObject.slice(start,end)

参数

描述

start

必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。

end

可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

返回值

返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。

// slice(开始下标, 结束下标(可选,默认为数组长度))

[‘a‘, ‘b‘, ‘c‘, ‘d‘].slice(1);// ["b", "c", "d"]

[‘a‘, ‘b‘, ‘c‘, ‘d‘].slice(1, 2);// ["b"]

[‘a‘, ‘b‘, ‘c‘, ‘d‘].slice(1, 3);// ["b", "c"]

(3)splice()

// splice(开始下标, 删除个数,插入元素(可以多个))

var arr = [1, 2, 3, 4];

arr.splice(1, 2);// [2,3]

arr;// [1,4]

arr = [1, 2, 3, 4];

arr.splice(1, 2, ‘a‘, ‘b‘, ‘c‘);// [2,3]

arr;// [1, "a", "b", "c", 4]

 

位置方法:

(1)indexOf(): 找着元素所在的下标,如果能查找到,则返回。否则返回-1

[‘a‘, ‘b‘, ‘c‘, ‘d‘].indexOf(‘c‘); // 2

[‘a‘, ‘b‘, ‘c‘, ‘d‘].indexOf(‘g‘); // -1

(2)lastIndexOf(): 从末尾开始往前找

[‘c‘, ‘d‘, ‘c‘].lastIndexOf(‘c‘); // 2

[‘a‘, ‘b‘, ‘c‘, ‘d‘].lastIndexOf(‘g‘); // -1

迭代方法:对数组的每一项运行给定的函数

(1)every()  数组中是否每个元素都满足指定的条件。

var isAllPositive = [3, 4, -1].every(function(each){

return each > 0;

});

isAllPositive; // false;

isAllPositive = [3, 4].every(function(each){

return each > 0;

});

isAllPositive; // true;

(2)filter()  从数组中找出所有符合指定条件的元素。

// 找出所有正数

var res = [3, 4, -1].filter(function(each){

return each > 0;

});

res; //[3,4]

 

(3)forEach()  遍历数组。

[‘a‘ ,‘b‘ ,‘c‘].forEach(function(item, index, arr){

   console.log(item,index);

});

// 输出 ‘a‘ 0  ‘b‘ 1 ‘c‘ 2

(4)map()    将数组映射成另一个数组。

// 内容 * 2

[1, 2, 3].map(function(each){

return each * 2;

});

some()    数组中是否有元素满足指定的条件。

// 是否有正数

var isSomePositive = [3, 4, -1].some(function(each){

return each > 0;

});

isSomePositive; // true;

isSomePositive = [-3, -4].every(function(each){

return each > 0;

});

isSomePositive; // false;

 

归并方法:

reduce():

reduce(function(prev,cur,index,array){

})

参数:

prev: 前一个值

cur: 当前值

index: 项的索引

array: 数组对象

从数组的第一项开始,逐个遍历到最后,将数组合成一个值。

// 数组内容求和。0 为初始值

[1, 2, 3].reduce(function(prev, each){

return prev + each;

}, 0);

// 返回 6

reduceRight(): 从数组的最后一项开始,逐个遍历到第一项

循环遍历数组:

JavaScript总结—数组

标签:

原文地址:http://www.cnblogs.com/nankeyimeng/p/5137679.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!