先上笑话,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. 取缔Chrome装载电脑管家的广告过滤脚本代码

    今天Chrome调试脚本.加载在下面的脚本中找到的内容: /* 电脑管家chrome 广告过滤 */ var GJAD_CS = { elemhideElt : null, setElemhideCS ...

  2. MVC 应用免受 CSRF攻击

    保护ASP.NET 应用免受 CSRF 攻击   CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack ...

  3. 【Bootstrap】自己主动去适应PC、平面、手机Bootstrap网格系统

    酒吧格英语作为一门系统"grid systems",也有人翻译成"网络格系统".使用固定格子设计布局,其风格整齐而简洁,在二战结束后人气,流风格之中的一个. 1 ...

  4. .NET应用架构设计—再次了解分层架构(现代企业应用分层架构核心设计元素)

    阅读文件夹: 1.背景介绍 2.简要回想下传统三层架构 3.企业级应用分层架构(现代分层架构的基本演变过程) 3.1.服务层中应用契约式设计来解决动态条件不匹配错误(通过契约式设计模式来将问题在线下暴 ...

  5. Canvas rontate(旋转) 使用误区

    context.setTransform(1,0,0,1,0,0);//重置转换为初始化状态 var angleInRadians = 45 * Math.PI / 180;var width = 4 ...

  6. Finding awesome developers in programming interviews(转)

    英文原文:Finding awesome developers in programming interviews 我曾在一次面试中要求一个很有经验的嵌入式软件开发人员写出一个反转一段字符串并输出到屏 ...

  7. 左右TS分析流

    字节.在TS流里能够填入非常多类型的数据.如视频.音频.自己定义信息等.他的包的结构为,包头为4个字节,负载为184个字节(这184个字节不一定都是有效数据.有一些可能为填充数据). 工作形式: 由于 ...

  8. python带cookie提交表单自动登录(转)

    今天突然把博客给申请了,以前也想过的,奈于自己觉得水平还太低有点不好意思写博客,但是后来一想,自己的记录所学,加深印象,主要还是为了学习进步,不怕丢人!今天就稍微回顾一下这两天写的一段用python模 ...

  9. UVA 11584

    Problem H: Partitioning by Palindromes We say a sequence of characters is a palindrome if it is the ...

  10. TCP/IP 网络编程(六)

    流程模型: 线程模型: 线程的创建和运行流程 #include <pthread.h> int pthread_create(pthread_t * restrict thread, co ...