数组

创建数组

  • 用Array构造函数
var arr = new Array();
var arr = new Array(10);//length为10的数组
var arr = Array();   
  • 数组字面量表示法
var arr = []

检测数组

Array.isArray(obj)

检测某个值到底是不是数组

var arr = [];
console.log(Array.isArray(arr));//true
var arr1 = new Date();
console.log(Array.isArray(arr1));//false

增删数组元素

  • 通过改变length的值,可以对数组的末尾添加或移除
var arr = [1,2,3,4];
arr.length = 3;
console.log(arr); // [1,2,3]
arr.length = 4;
console.log(arr); // [1, 2, 3, undefined]
arr[3] = 5;
console.log(arr); //[1,2,3,5]

push()

可将任意数量的参数添加到末尾,并返回数组长度

var arr = [1,2,3,4];
console.log(arr.push(7));// 5 数组长度为5
console.log(arr);//[1,2,3,4,5]

pop()

从数组末尾移除一项,减少length值,并返回移除的项

var arr = [1,2,3,4];
console.log(arr.pop());//4 移除了4
console.log(arr);//[1,2,3]

push()和pop()是栈方法

unshift()

可将任意数量的参数添加到开头,并返回数组长度

var arr = [1,2,3,4];
console.log(arr.unshift(7));//5 长度
console.log(arr);//[7,1,2,3,4]

shift()

从数组开头移除一项,减少length值,并返回移除的项

var arr = [1,2,3,4];
console.log(arr.shift());//1
console.log(arr);//[2,3,4]

unshift和shift是队列方法

转换方法

join()

使用不同分隔符将数组转化成字符串

var arr = [1,2,3,4];
console.log(arr.join('-'));//"1-2-3-4"

操作方法

concat()

创建一个新数组,将接收到的参数添加到新数组的末尾

注意:concat()不会影响原始数组

var arr1 = [1,2,3]
var arr2 = [4,5,6]
var arr3 = arr1.concat(7,[8,9]);
console.log(arr3);// [1, 2, 3, 7, 8, 9]
var arr4 = arr1.concat(arr2);
console.log(arr4);// [1, 2, 3, 4, 5, 6]
var arr5 = arr1.concat();
console.log(arr5); //[1, 2, 3] 这是一个新数组

slice()

基于当前数组中的一个或多个项创建新数组。

  • 一个参数:从参数指定位置开始到当前数组末尾的所有项。
  • 两个参数:起始位置到结束位置,但不包括结束位置的所有项
  • 可以有负数:数组长度加上该数来确定相应的位置。
    注意:slice()不会影响原始数组
var arr1 = [1,2,3,4,5,6];
var arr2 = arr1.slice(2);
console.log(arr2);// [3, 4, 5, 6]
var arr3 = arr1.slice(1,4);
console.log(arr3);// [2, 3, 4]
var arr4 = arr1.slice(-2);
console.log(arr4); // [5, 6] -2+6=4,从下标为4的项5开始

splice()

用途:删除,插入,替换

  • 删除:两个参数,要删除的第一项位置和要删除的项数
  • 插入:三个参数,起始位置、要删除的项数、插入的项
  • 替换:三个参数,起始位置,删除的项数,插入的项(先删除在插入即替换)
    splice返回一个数组,包含被删除的项
var arr1 = [1,2,3,4,5,6];
var arr2 = arr1.splice(0,1);
console.log(arr1);//[2, 3, 4, 5, 6]
console.log(arr2);[1]
var arr3 = arr1.splice(1,0,'red','green');
console.log(arr1);//[2, "red", "green", 3, 4, 5, 6]
console.log(arr3);//[]
var arr4 = arr1.splice(1,3,'yellow','black');
console.log(arr1);//[2, "yellow", "black", 4, 5, 6]
console.log(arr4);//["red", "green", 3]

位置方法

indexOf()

从数组的开头开始向后查找

两个参数:要查找的项、查找的起点、
没找到要查的项则返回-1

var arr1 = [3,4,7,8,0,9,4];
console.log(arr1.indexOf(4)); //1
console.log(arr1.indexOf(5));//-1
console.log(arr1.indexOf(4,3));//6 从下标为3的位置开始查找数字4

lastIndexOf()

从数组的末尾开始向前查找

var arr1 = [3,4,7,8,0,9,4];
console.log(arr1.lastIndexOf(0));//4
console.log(arr1.lastIndexOf(5));//-1
console.log(arr1.lastIndexOf(4,7));// 5从下标为7的项开始往前查找,找最近的。

重排序方法

reverse()

反转数组的顺序

var arr = [1,2,3,4];
console.log(arr.reverse());//[4,3,2,1]

sort

按升序排列数组项,最小的值在最前面,通过toString()比较字符串Unicode 。

var arr = [77,26,52,98,11];
console.log(arr.sort());//[11, 26, 52, 77, 98]

var arr = ['banana','hello','apple','pear'];
console.log(arr.sort());//["apple", "banana", "hello", "pear"]

var arr = [0,10,1,5,15];
console.log(arr.sort());//[0, 1, 10, 15, 5],进行字符串比较时'10'位于‘5’前面

比较字符串可能改变数组的顺序,可以接一个比较函数。

function compare(value1,value2){
  if(value1 < value2){
    return -1;
  }else if(value1 > value2) {
    return 1;
  }else {
    return 0;
  }
}
var arr = [0,10,1,5,15];
console.log(arr.sort(compare));//[0, 1, 5, 10, 15]
//sort()得到的参数为正数时才交换两个值的顺序,否则不交换                                                 

或者更简单的

function compare(value1,value2){
return value1 - value2;
}
var arr = [0,10,1,5,15];
console.log(arr.sort(compare));//[0, 1, 5, 10, 15]

迭代方法

forEach(element,index,array)

遍历数组,参数为一个回调函数。
本质与for循环迭代数组一样。

回调函数有三个参数:

  • 当前元素
  • 当前元素索引值
  • 整个数组
var arr = [1,2,3,4,5];
for(var i = 0; i < arr.length;i++){
  console.log(arr[i]);
} // 1 2 3 4 5
arr.forEach(function(e){
  console.log(e);
})// 1 2 3 4 5

every(element, index, array)

查询数组中的项是否满足某个条件,全true即true。

var arr = [1,2,3,4,5,6];
var everyResult = arr.every(function(a){
  return a > 5;
});
console.log(everyResult);// false

some(element, index, array)

查询数组中的项是否满足某个条件,一true即true。

var someResult = arr.some(function(a){
  return a > 5;
});
console.log(someResult);//true

map()

遍历数组返回经过函数执行的结果。

var arr = [1,2,3,4,5,6];
var mapResult = arr.map(function(a){
  return a * 2;
});
console.log(mapResult);//[2, 4, 6, 8, 10, 12]

fliter()

通过函数判断返回数组中满足要求的项。

var arr = [1,2,3,4,5,6];
var filterResult = arr.filter(function(a){
  return a > 3;
});
console.log(filterResult);//[4,5,6]

归并方法

reduce()

从数组第一项迭代数组所有项最终返回一个值。

var arr = [1,2,3,4,5];
var sum = arr.reduce(function(x,y){
  return x + y;
});
console.log(sum);//15

reduceRight()

从数组最后一项迭代数组所有项最终返回一个值。

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

推荐阅读更多精彩内容

  • 一、数组定义 array() 1、索引数组 在一个变量中,存储一个或多个值。数组中的每一个元素都有一个访问ID,根...
    竹与豆阅读 535评论 0 0
  • 数组是值的有序集合。每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。 JavaScript...
    劼哥stone阅读 1,133评论 6 20
  • 本文总结了数组所有的方法。 1. 检测对象是不是数组 instanceof操作符 Array.isArray()方...
    胡不归vac阅读 685评论 0 1
  • Javascript有很多数组的方法,有的人有W3C的API,还可以去MDN上去找,但是我觉得API上说的不全,M...
    顽皮的雪狐七七阅读 4,095评论 0 6
  • 近来想必大家日子都过得不甚好,网络暴力之势盛行不下,黑子喷子队伍不减反而壮大,他们对于别人的行为几乎都是采取零容忍...
    无哩小文阅读 116评论 0 0