引用类型之Array

创建

  • Array构造函数
let colors = new Array();
let colors = new Array(20);
let colors = new Array('red','blue');

构造函数创建数组时也可以省略new关键字

  • 字面量
let colors =['red','blue'];
let colors = [];

与对象一样,在使用字面量创建数组时,不会调用 Array构造函数

检测数组

  • instanceof: colors instanceof Array;
  • Array.isArray():Array.isArray(colors);
    对于一个网页 或者一个全局作用域而言,使用insanceof就可以得到想要的结果,一旦存在两个以上不同的全局环境,它不能得到我们想要的结果,因而就出现了Array.isArray()

转换方法

  • valueof():返回数组自身
  • toString():返回由数组中每个值的字符串形式拼接而成的以逗号分隔的字符串
  • toLocaleString():通常也返回数组字符串形式组成的以逗号分隔的字符串
  • join():可以选择使用不同的分隔符来分隔字符串
let colors = ['red','blue'];
let ts = colors.toString();
let tls = colors.toLocaleString();
let v = colors.valueOf();
let j = colors.join(';');

console.log(ts);
console.log(tls);
console.log(v);
console.log(j);
//结果
"red,blue"
"red,blue"
["red", "blue"]
"red;blue"

栈&队列方法

  • pop():从数组末尾移除一项并返回这一项
  • push():从数组末尾添加一项并返回新数组的长度
  • shift():移除数组中的第一项并返回这一项
  • unshift():在数组前端添加项并返回新的数组长度

重排序方法

  • reverse():反转数组项的顺序
  • sort():按照升序排列数组项
let num1= [1,5,3,7,0];
let num2 = [12,21,5,4,0];

console.log(num1.sort());
console.log(num1.reverse());
console.log(num2.sort());
console.log(num2.reverse());
//结果
[0, 1, 3, 5, 7]
[7, 5, 3, 1, 0]
[0, 12, 21, 4, 5]
[5, 4, 21, 12, 0]

在某些情况下这两个方法能满足我们的需求,但有些情况却不可以,因为这两个方法在排序时将数组项都转换成字符串再进行排序,所以对于有些数值不能正确排序
为了解决这个问题,可以sort()方法接收一个比较函数作为参数,以便我们指定哪个值应该排在前边

//比较函数
function compare(value1,value2){
  if(value1 < value2){
    return -1;
  }
  else if(value1>value2){
    return 1;
  }
  else{
    return 0;
  }
}

//当数组项都是数值时,可将比较函数简化为compare1
function compare1(value1,value2){
return value1-value2;
}

let num = [1,23,0,5,7];
let colors = ['red','blue','pink'];

console.log(num.sort(compare));
console.log(colors.sort(compare));
//结果
[0, 1, 5, 7, 23]
["blue", "pink", "red"]

实现逆序只需要在比较函数中调换两个参数即可

操作方法

  • concat():基于当前数组项创建一个新数组,并且将参数中项追加到新数组之后
  • splice():
    • splice(start,count):删除从start位置起始的count项
    • splice(start,count,value):删除从start位置起始的count项并且插入后边的参数

位置方法

  • indexOf():返回指定项在数组中的位置,从前往后找,可指定起始位置
  • lastIndexOf():返回指定项在数组中的位置,从后往前找,可指定起始位置

迭代方法

  • every():对数组中的每一项运行指定函数,若每一项该函数都返回true,则最终返回true
  • filter():对数组中的每一项运行指定函数,返回该函数返回true的项组成的数组
  • forEach():对数组中的每一项运行指定函数,无返回值
  • map():对数组中的每一项运行指定函数,返回每次函数调用的结果组成的数组
  • some():对数组中的每一项运行指定函数,只要有返回true的项则最终返回true,否则返回false
let nums = [1,3,4,6,5];

let evenum = nums.every(function(item,index,array){
  return (item>0);
});

let filnum = nums.filter(function(item,index,array){
  return (item > 3);
});

let mapnum = nums.map(function(item,index,array){
  return item+1;
});

let somenum = nums.some(function(item,index,array){
  return item >5;
});

nums.forEach(function(item,index,array){
  item = item+1;
});

console.log(evenum);
console.log(filnum);
console.log(mapnum);
console.log(somenum);
//结果
true
[4, 6, 5]
[2, 4, 5, 7, 6]
true

归并方法

  • reduce():从前到后迭代数组中的每一项,构建一个最终的返回值
  • reduceRight():从后往前迭代数组中的每一项,构建一个最终的返回值
let nums = [1,3,4,6,5];

let sum = nums.reduce(function(pre,cur,index,array){
  return pre+cur;
});

let sumright = nums.reduce(function(pre,cur,index,array){
  return pre+cur;
});

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

推荐阅读更多精彩内容