先上笑话,1.刚看到一个游泳的,想起公司组织去三亚旅游,老板跳海里,各种挣扎,捞上来老板第一句话:我记得我会游泳的啊。
2.媳妇说:老公对不起,我把你新买的自行车撞散架了! 老公:没事宝贝,你若安好,便是晴天! 媳妇说:老公你太有诗意了。 老公:滚犊子,安不好我整死你!

数组的概念

javascript数组是值得有序集合,不过它实属一个javascript对象的特殊形式,这是一个很重点的定性。

创建数组

1.var a=new Array();//等同于[]

2.var a=new Array(10); //指定长度的数组

3.var a=new Array(1,2,“marry you”);

4.var a=[];

数组是动态的
首先数组是可以通过[]来访问数组元素,使用此语法可以读写数组,其中[]内的是小于232非负整数作为属性名时数组会自动维护其length。首先清晰的区分数组的索引和对象的属性名,所有的索引都是属性名,但只有0~232-2之间的整数属性名才是索引。

所有的数组都是对象,可以给数组对象创建任意名字的属性。但是如果使用的属性是数组的索引,数组的特殊行为就会更具需要去更新其length属性值。

这会纠正一个javascript数组“越界”错误的概念,如果试图访问数组索引超出其长度,则不会报错,只会返回undefined值。

稀疏数组和稠密数组

概念是值包含从0开始的不连续索引的数组。也可以这么理解,就是length属性值大于元素的个数。那么这样就会比正常的稠密数组在内存利用率更高,但查找效率基本一致。

此时可以用in来检测

var a1=[,,,];

0 in a1//false

数组元素的添加和删除

最简单的删除方式是var a=[1,2,4]; a.length=0;

同样你也可以用Object.defineProperty()让数组length属性变成只读

var a=[1,2,4];
Object.defineProperty(a,"length",{writable:false});
a.length=0;
console.log(a);
//[1, 2, 4]

添加用push(1,3,4,5,7)//此处可以一次性添加多个元素

delete a[1]是不会修改数组a的length属性,就相当于给删除元素位置赋值undefined值,那么改数组也就变成了稀疏数组了。所以应该用pop()该函数会返回删除的元素

数组遍历

遍历数组用for/in或for。前者遍历是没有一定顺序,所以可以用forEach(ECMAScript 5中的新增的函数)或者for来代替,同时遍历是最好缓存数组长度例如

for(var i=0,alength=a.length;i++){
//循环体
} for(var i in a){
if(!a.hasOwnProperty(i)){
continue; //跳出循环体
//循环体
}
}

数组的方法

常用方法有join()/reverse()/sort()/concat()/slice()/splice()/push()/pop()/unshift()/shift()/toString()/toLocalString()

如果你对以上都了解,那么我还是想说说其中一个方法

如果用排序少不了sort它是按照字符排序,如果遇到数字或者对一些处理后的字符排序怎么做呢

sort()该方法可以传一个匿名函数作为参数,该匿名函数就可以满足我们的一些特殊要求了,

a=['a',"bug","Good","ccc"];
a.sort(function(s,t){
var a=s.toLowerCase();
var b=t.toLowerCase();
if(a<b) return -1;
if(a>b) return 1;
return 0;
});
//["a", "bug", "ccc", "Good"]

ECMAScript 5中新增数组方法

forEach()//遍历数组,按顺序输出,如果要break;就要用try catch来辅助了。

map()// a=[1,2,3]; a.map(function(x){return x*x;}) //[1,4,9];

filter()//a=[5,3,4,5,6]; a.filter(function(x,i){return i%2==0});//[4,6]

every()/some()/reduce()/reduceRigth()/indexOf()/lastIndexOf()等如果不知道就谷哥吧。

这里要说一点的是字符串的行为类似于数组的事实使得通用的数组方法可以应用到字符串上。

例如:

Array.prototype.filter.call("javascript",function(x){return x.match(/[^aeiou]/);}).join("");

//"jvscrpt"

结束语

简单总结就是数组表现出来的很多东西的本质其实是因为它是对象而决定的。数组中大多数的方法都是通用的,这就意味着它不仅对数组对象有效,而且对”类数组对象同样有效“如字符串行为就与字符数组类似。如果你觉得不错,那就推荐一下。

私人定制javascript中数组小知识点(Only For Me)的更多相关文章

  1. 私人定制javascript中函数小知识点

    函数的定义 首先在javascript中,函数就是对象,程序可以随意操控它们.比如,可以给它们设置属性,甚至调用它们的方法.函数使用function关键字来定义.它既可以用在函数定义表达式,也可以用在 ...

  2. 私人定制javascript中对象小知识点(Only For Me)

    废话不多讲,先上笑话,然后再,.看懂这个的说明你的节操已经不再了. 晚饭后去理发店理发...割了吧...老板问我怎么剪,我悠悠的来一句往帅了剪...高潮往往令人想不到....旁边一在焗油烫头发的大妈说 ...

  3. 私人定制自己的linux小系统

     私人定制自己的linux小系统 一.前言    linux操作系统至1991.10.5号诞生以来,就源其开源性和自由性得到了很多技术大牛的青睐,每个linux爱好者都为其贡献了自己的一份力,不管是在 ...

  4. Javascript中数组

    Javascript中数组 1.什么是数组 所谓的数组就是一组数据的集合,在内存中表现为一段连续的内存地址(保存在堆内存) 2.创建数组的含义 创建数组的目的:就是为了保存更多的数据 3.数组的定义 ...

  5. javascript中数组的常用算法深入分析

    Array数组是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array是前端必修的功课.本文将给大家详细介绍了javascri ...

  6. JavaScript中数组Array.sort()排序方法详解

    JavaScript中数组的sort()方法主要用于对数组的元素进行排序.其中,sort()方法有一个可选参数.但是,此参数必须是函数. 数组在调用sort()方法时,如果没有传参将按字母顺序(字符编 ...

  7. JavaScript中数组操作常用方法

    JavaScript中数组操作常用方法 1.检测数组 1)检测对象是否为数组,使用instanceof 操作符 if(value instanceof Array) { //对数组执行某些操作 } 2 ...

  8. javascript中数组Array的方法

    一.常用方法(push,pop,unshift,shift,join)push pop栈方法,后进先出var a =[1,2,3];console.log(a.push(40)); //4 返回数组的 ...

  9. javascript中数组常用方法总结

    原文:javascript中数组常用方法总结 在javascript的基础编程中,数组是我们最常遇到的,那么数组的一些常用方法也是我们必须要掌握的,下面我们总结一下数组中常用的方法. toString ...

随机推荐

  1. 在线maven 仓库

    findmaven.net是一个查找Jar和查找Maven的Maven仓库搜索引擎.它能够依据Java开发人员提供的Class名或者Jar名找到包括它的Jar,同一时候提供Jar的Maven仓库链接, ...

  2. unity3d中让物体显示和隐藏

    unity3d中让物体显示和隐藏的方法 gameObject.renderer.enabled //是控制一个物体是否在屏幕上渲染或显示  而物体实际还是存在的 仅仅是想当于隐身 而物体本身的碰撞体还 ...

  3. 输入n个数和输出调整后的n个数

    输入n个数和输出调整后的n个数 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 148  Solved: 118 [Submit][Status][We ...

  4. SQL SERVER中XML查询:FOR XML指定PATH

    SQL SERVER中XML查询:FOR XML指定PATH 前言 在SQL SERVER中,XML查询能够指定RAW,AUTO,EXPLICIT,PATH.本文用一些实例介绍SQL SERVER中指 ...

  5. [DEEP LEARNING An MIT Press book in preparation]Deep Learning for AI

    动人的DL我们有六个月的时间,积累了一定的经验,实验,也DL有了一些自己的想法和理解.曾经想扩大和加深DL相关方面的一些知识. 然后看到了一个MIT按有关的对出版物DL图书http://www.iro ...

  6. POJ 3076 Sudoku DLX精确覆盖

    DLX精确覆盖模具称号..... Sudoku Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 4416   Accepte ...

  7. Java网络编程注意事项3

    如何使用POST请求和GET请求Web网站发送请求,下面的参考代码: import java.io.BufferedReader; import java.io.InputStream; import ...

  8. ZipDemo

    package swing.zip; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt. ...

  9. 泛泰A860(高通公司8064 cpu 1080p) 拂4.4中国民营recovery TWRP2.7.1.2文本(通过刷第三版)

    专业第三方开发团队 VegaDevTeam  (本team 由 syhost suky zhaochengw(z大) xuefy(大星星) tenfar(R大师) loogeo crazyi(天下无雪 ...

  10. MEF初体验之六:导出和元素据

    在导出声明这一节中解释了部件导出服务和值的基础知识.在某些情况下,出于多种原因,关联与导出相关的信息是有必要的.通常,它被用来解释一个指定的普通契约实现的能力.这对于允许导入约束满足它的导出,或者导入 ...