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

《Javascript权威指南》数组

时间:2015-03-21 15:32:31      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

一、创建数组

var a = [,,]; //数组有2个元素

var a = new Array(10);    //指定长度

 

二、稀疏数组

从0开始的不连续索引的数组。可以使用Array()构造函数或简单指定数组的索引大于数组长度来创建。

var a1 = [,,,];         //数组是[undefined, undefined, undefined]

var a2 = new Array(3);   //没有元素

 

delete 删除数组元素不会修改length,数组变成稀疏数组

 

三、数组遍历

function Traversal(o){

    var keys = Object.keys(o);

    var values = [];

    for (var i = 0;

i < keys.length; i++){

    var key = keys[i];

    values[i] = o[key];

    }

    return values;

}  

 

跳过 null undefined 不存在的元素

if(!a[i]) continue;

 

跳过 undefined 不存在的元素

if(a[i] === undefined) continue;

 

只跳过不存在的元素

if(! i in a) continue;

 

使用 for in 处理稀疏矩阵

每次遍历将一个可枚举属性名赋值给循环变量

var a = [1,,2,3];

var b = [];

var pos = 0;

for(var index in a) {

      b[pos++] = a[index];

}

 

四、多维数组

var table = new Array(10);

for(var i = 0;

i < table.length; i++) {

    table[i] = new Array(10);

}

//初始化

for(i = 0; i < table.length; i++) {

    for(j=0; j < table[i].length; j++) {

        table[i][j] = i * j;

    }

}

 

五、数组方法

join()

将数组所有元素转化为字符串连在一起,返回生成的字符串,可以指定一个字符串分隔各个元素,不指定默认使用逗号

 

reverse()

将数组的元素颠倒顺序,返回逆序数组。 在原先的数组中重新排列它们

 

sort()

将数组的元素排序并返回排序后的数组,不带数组调用时以字母表顺序排序,如果包含undefined,会被排到数组末尾。

给sort()传递一个比较参数。假设第一个参数应该在前,比较函数返回一个小于0的值。

a.sort(function (a,b) { return a-b});   //数值大小

a.sort(function (a,b) {

    var c = a.toLowerCase();

    var d = b.toUpperCase();

    if (c < d) return -1;

    if (c > d) return 1;

});

 

concat()

创建并返回一个新数组,它的元素包括调用concat() 的原数组和提供的参数。如果有数组,则连接的是数组的元素。

 

slice()

返回指定数组的片段或子数组,两个参数分别指定开始和结束的位置(不包含)。负数表示相对于最后元素的对应位置,不会修改数组。

 

splice()

能从数组删除元素、插入元素,完成操作后数组元素改变索引值。第一个参数指定起始位置,第二个参数指定从元素中删除的元素的数量,如果省略第二个参数,则从起始位置后全部删除。第三个参数开始指定在第一个参数指定的位置要插入的元素。

 

push() pop()

将数组当做栈使用,返回数组新长度

 

unshift() shift()

unshift()在数组头部添加或删除元素,将剩余元素前移,返回数组新长度。使用多参数调用 unshift()是一次性插入 shift()删除数组第一个元素并返回,把剩余元素下移

 

toString() toLocaleString()

toString()将每个元素转换为字符串,用逗号分隔

 

六、ECMAScript5的数组方法

 

forEach() 遍历

为每个参数调用指定的函数。要提前终止需要把forEach()放在try并能抛出异常。

 

map()     映射

将每个元素传递给指定函数,返回一个数组,包含该函数的返回值。传递给map()的函数应该有返回值。 返回的是新数组,不修改原数组

var a = [1,2,3];

b = a.map(function (x){return x*x;});

 

filter()  过滤

返回元素的子集,如果返回值为true或能转化为true,则添加到返回的数组。会跳过稀疏数组缺少的元素。

var a = [1,2,3,4,5];

a.filter(function (x){return x%2==0});

 

every() some()

检测 every() 当且仅当数组所有元素调用函数都返回true,才返回true some()  只要至少有一个元素调用函数返回true,就返回true 一旦every()或some()确定该返回什么值时就停止遍历

 

reduce() reduceRight()  简化

使用指定的函数将数组元素组合,生成单个值。 第一个参数把两个值组合或化简为一个值,返回化简后的值。第二个参数(可选)传递给函数的初始值。 reduceRight()按照数组索引从右到左

 

indexOf() lastIndexOf() 

搜索 搜索给定值的元素,返回找到的第一个元素的索引,没有则返回-1,lastIndexOf()从最后开始。第二个参数(可选)表示从该位置开始,可以是负数。 //返回数组所有元素匹配值的索引

function findall(a, x) {

    var results = [],

        len = a.length,

        pos = 0;

    while(pos < len) {

        pos = a.indexOf(x,pos);

        if(pos === -1) break;

        results.push(pos);

        pos = pos + 1;

    }

    return results;

}

 

七、检测数组

var isArray = Function.isArray || function (o) {

    return typeof o === "object" &&

    Object.prototype.toString.call(o) === "[object Array]";

}

《Javascript权威指南》数组

标签:

原文地址:http://www.cnblogs.com/surahe/p/4355565.html

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