先上笑话,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. [Android]Can&#39;t create handler inside thread that has not called Looper.prepare()

    更新是由于在新的线程来打开UI只有一个错误.子线程更新主线程UI需要使用Handler. 还有比如今天出现以下错误.码,如以下: send.setOnClickListener(new OnClick ...

  2. UVa 12683 Odd and Even Zeroes(数论+数字DP)

    意甲冠军: 要求 小于或等于n号码 (0<=n <= 1e18)尾数的数的阶乘0数为偶数 思考:当然不是暴力,因此,从数论.尾数0数为偶数,然后,它将使N阶乘5电源是偶数.(二指数肯定少5 ...

  3. IBatis.Net获取执行的Sql语句

    前言 IBatis.Net中Sql语句是些在配置文件中的,而且配置文件是在程序启动时读取的(我们开发的时候需要将其设置成较新复制或者是始终复制),而不是程序将其包含在其中(例如NHibernate的映 ...

  4. DisplayContent、StackBox、TaskStack笔记

    文章仅零散记录自己的一点理解,仅供自己參考. 每一个显示设备,都有一个Display对象,DisplayManagerService专门管理这些Display. 1.DisplayContent() ...

  5. Mysql入门到精通数据表的操作

    变更表 ALTER TABLE tb_name; 1.加入场 ALTER TABLE tb_name ADD 字段名字 字段类型 约束条件 [FIRST/AFTER 字段名称] 1>加入user ...

  6. FastDFS设备、构造、配置()一-安装和部署

    FastDFS是一个开源的.高性能的的分布式文件系统,他基本的功能包含:文件存储.同步和訪问,设计基于高可用和负载均衡,FastDFS很适用于基于文件服务的站点.比如图片分享和视频分享站点 FastD ...

  7. Service Manager流程,派BC_REPLY,唤醒FregServer流程,返回BR_TRANSACTION_COMPLETE,睡眠等待proc-&gt;wait

    本文參考<Android系统源代码情景分析>,作者罗升阳 一.service manager代码:        -/Android/frameworks/base/cmd/service ...

  8. Visual Studio中开发

    如何在Visual Studio中开发自己的代码生成器插件    Visual Studio是美国微软公司开发的一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代 ...

  9. uva 10831 - Gerg&#39;s Cake(勒让德符号)

    题目链接:uva 10831 - Gerg's Cake 题目大意:给定a和p.p为素数,问说是否存在x,使得x2≡a%p 解题思路:勒让德记号,推断ap−12≡1%p #include <cs ...

  10. InputMonitor注意事项

    文章只记录自己的点点理解.为了你自己的参考. 1.mInputFocus WMS.addWindow()-->WMS.finishUpdateFocusedWindowAfterAssignLa ...