JavaScript学习总结之数组

Array类型

"可以保存任何类型的数据,并且大小可以调整的.“

一、创建实例

1、使用Array构造函数
var color = new Array();

2、使用数组字面量表示法
var color = ["red","blue","yellow"];

  • 其中需要注意的是:强烈建议不要使用 var option = [,,,,];

3、元素的读取和设置使用【】+下标
4、数组长度使用.length

二、检测数组

对于一个网页或者一个全局作用域而言,使用instanceof操作符就能得到满足的结果,但是对于网页包含多个框架,从而会存在两个以上不同版本的Array构造函数。所以引进了Array.isArray()方法,具体用法如下:
if(Array.isArray(value)) { }

三、转换方法

如前所述,所有对象都具有toLocaleString()、toString()和valueOf()方法。
1、toString()方法:返回由数组中每个值得字符串形式拼接而成的一个以逗号分隔的字符串;
2、toLocaleString()方法:经常也会返回与toString()和valueOf()方法相同的值,但唯一不同之处在于:为了取得每一项的值,调用的是每一项的toLocaleString()方法,而不是toString()方法,请看下面的例子

var person1 = {
   toLocaleString : function () {
          return "Nikolaos";
  },
  toString : function() {
         return "Nicholas";
  }
};
var person2 = {
  toLocaleString : function () {
          return "Grigorios";
  },
  toString : function() {
         return "Greg";
  }
};

var people = [person1,person2];
alert(people);  //Nicholas,Greg
alert(people.toString());  //Nicholas,Greg
alert(people.toLocaleString());  //Nikolaos,Grigorios

4、前三种方法,在默认情况下都会返回以逗号分隔的字符串。而如果使用join()方法,则可以使用不同的分隔符来构建这个字符串。join()方法只接受一个参数,即用作分隔符的字符串,然后返回包含所有数组项的字符串。

四、栈和队列方法

1、栈方法

function Stack(){
     var items=[];//用数组来保存栈中的数据;
     this.push=function(element){
      items.push(element);
     };
     this.pop=function(){
      return items.pop();
     };
     this.peek=function(){
      return items[items.length-1];
     };
     this.isEmpty=function(){
      return items.length == 0;
     };
     this.size=function(){
      return items.length;
     }
     this.clear=function(){
      items=[];
     }
     this.toString=function(){
      return items.toString();
     };
   }

主要是两个方法:push():添加到数组的末尾;pop():从末尾移除最后一项;
2、队列方法

function Queue(){
     var items=[];//用数组来保存栈中的数据;
     this.enqueue=function(element){
      items.push(element);
     };
     this.dequeue=function(){
      return items.shift();
     };
     this.font=function(){
      return items[0];
     };
     this.isEmpty=function(){
      return items.length == 0;
     };
     this.size=function(){
      return items.length;
     }
     this.clear=function(){
      items=[];
     }
     this.toString=function(){
      return items.toString();
     };
   }

主要两个方法:push()方法和shift()方法:从数组的前端取得项;

五、重排序方法

1、reverse()方法:返回数组项的逆序;
2、sort()方法

sort(function compare(value1,value2){
  return value1 - value2; //升序
  return value2 - value1; //降序
});

六、操作方法

1、concat()方法可以基于当前数组中的所有项创建一个新数组,将接收到的参数添加到这个副本的末尾;

var colors = ["red","green","blue"];
var colors2 = colors.concat("yellow",["black","brown"]);
alert(colors2); // red,green,blue,yellow,black,brown;

2、slice()方法可以基于一个或多个项创建一个新数组。可以接收两个参数,一个起始位置,一个结束为止,当只有一个参数时,从起始位置到数组末尾项;

var colors = ["red","green","blue","yellow"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,2);
alert(colors2); //green,blue,yellow;
alert(colors3); // green,blue;

3、splice()方法:删除、插入、替换,返回一个包含从原始数组中删除的项的数组。
删除:splice(起始位置,删除项数)
插入:splice(起始位置,0,...,...);
替换:splice(起始位置,1,...,...);

七、位置方法

1、indexOf(起始位置,寻找的元素):从数组开头开始向后找;
2、lastIndexOf(起始位置,寻找的元素):从数组末尾开始向前找;
这两个方法都返回要查找的项在数组中的位置,或者在没有找到的情况下返回-1;

八、迭代方法

ECMAScript5为数组定义了5个迭代方法。每个方法都接受两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象--影响this的值。传入这些方法中的函数会接受三个参数:数组项的值、该项在数组中的位置和数组对象本身。
1、every(function(item,index,array){}) 每一项都返回true,结果才为true

var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item,index,array){
   return (item>2);
});
alert(everyResult); //false;

2、some(function(item,index,array){}) 对任一项返回true,结果就为true;

var someResult = numbers.some(function(item,index,array){
     return (item>2);
});
alert(someResult); //true;

3、filter(function(item,index,array){}) 返回该函数会返回true的项组成的数组

var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item,index,array){
   return (item>2);
});
alert(filterResult); //[3,4,5,4,3];

4、forEach(function(item,index,array){}) 对数组每一项执行函数,没有返回值
5、map(function(item.index,array){}) 返回每次函数调用结果的数组

var numbers = [1,2,3,4,5,4,3,2,1];
var mapResult = numbers.map(function(item,index,array){
   return item*2;
});
alert(mapResult); //[2,4,6,8,10,8,6,4,2];

九、归并方法

ECMAScript5还信增了两个归并数组的方法:reduce()和reduceRight()。这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。这连个方法都接收两个参数:一个在每一项上调用的函数和(可选)作为归并基础的初始值。传入的函数接收4个参数:前一个值、当前值、项的索引和数组对象本身。
1、reduce(function(prev,cur,index,array){}),从数组的第一项开始,逐个遍历到最后。使用reduce()方法可以执行求数组中所有值之和的操作。比如:

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev,cur,index,array){
       return prev + cur;
});
alert(sum); //15;

2、reduceRight(function(prev,cur,index,array){}) 从数组的最后一项开始hi,向前遍历到第一项

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,204评论 0 4
  • 第5章 引用类型 引用类型的值(对象)是引用类型的一个示例。在ECMAScript 中,引用类型是一种数据结构,用...
    力气强阅读 709评论 0 0
  • Javascript有很多数组的方法,有的人有W3C的API,还可以去MDN上去找,但是我觉得API上说的不全,M...
    顽皮的雪狐七七阅读 4,060评论 0 6
  • 1.在C/C++中实现本地方法 生成C/C++头文件之后,你就需要写头文件对应的本地方法。注意:所有的本地方法的第...
    JayQiu阅读 2,320评论 0 3
  • 3.6 语句 3.6.1 if语句 语法:if(condition) statement1 else statem...
    丨ouo丨阅读 269评论 0 1