引用类型(二):Array类型
一、js中的数组与其它语言中的数组的区别
1、ECMAScript数组的每一项可以保存任何类型的数据
2、ECMAScript数组的大小是可以动态调整的
二、创建数组的基本方式
1、使用Array构造函数
var colors = new Array();
var colors = new Array(20); //知道长度的情况下
var colors = new Array('red','blue','green');//知道包含的项var
*:也可以省略new
var colors = Array(3);
2、数组字面量表示法。多个数组项之间以逗号隔开
var colors = ['red','blue','green']; //创建一个包含3个字符串的数组
var name = []; //创建一个空数组
三、数组的特点
1、数组的length属性很有特点-它不是只读的。因此,通过设置这个属性,可以从数组的末尾移除项或向数组中添加新项
eg1:移除项
var colors = ['red','blue','green'];
colors.length = 2;
console.log(colors);
eg2:增加项
var colors = ['red','blue','green'];
colors.length = 4;
console.log(colors);
2、数组是有限的,数组最多可以包含 4 294 967 295 个项,如果超过这个上限值,就会发生异常
四、检测数组
1、if(value instanceof Array){}
问题:它假定只有一个全局执行环境。如果网页中包含多个框架,那实际上就存在两个以上不同的全局执行环境,从而存在两个以上不同版本的Array构造函数。
如果你从一个框架向另一个框架传入一个数组,那么传入的数组与第二个框架中原生创建的数组分别具有鸽子不同的构造函数
2、if(Array.isArray(value)){}
五、转换方法
var colors = ['red','blue','green'];
console.log(colors.toString()); //"red,blue,green"
console.log(colors.valueof()); //['red','blue','green']
console.log(colors); //['red','blue','green'] alert(colors.toString()); //"red,blue,green"
alert(colors.valueof()); //"red,blue,green"
alert(colors); //"red,blue,green"
六、数组的栈方法
数组可以表现得就像栈一样,后者是一种可以限制插入和删除项的数据结构。栈是一种先进后出,后进先出的数据结构
push()方法可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组到长度。
pop()方法则从数组末尾移除最后一项,减少数组到length值,然后返回移除的项
var colors = new Array();
colors.push('red','green');
console.log(colors); //red,green
colors.pop();
console.log(colors); //red
七、数组的队列方法
队列数据结构的访问规则是先进先出,队列在列表的末端添加项,从列表的前端移除项
push()方法可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组到长度。
shift()方法移除数组中的第一个项并返回该项,同时将数组长度减1.
var colors = new Array();
colors.push('red','green');
console.log(colors); // red,green
colors.shift();
console.log(colors); // green
pop()方法则从数组末尾移除最后一项,减少数组到length值,然后返回移除的项
unshift()方法在前端添加项
var colors = new Array();
colors.unshift('red','green');
console.log(colors); //red,green
colors.pop();
console.log(colors); //red
八、重排序方法
reverse()方法会反转数组项的顺序。
var values = [1,2,3,4,5];
values.reverse();
console.log(values); //5,4,3,2,1
sort()方法按升序排列数组项-即最小的值位于最前面,最大的值排在最后吗。
升序
function compare(value1,value2){
if(value1 < value2){
return -1;
}else if(value1>value2){
return 1;
}else{
return 0;
}
}
var values = [0,1,5,10,15];
values.sort(compare);
console.log(values); //0,1,5,10,15
降序
function compare(value1,value2){
if(value1 < value2){
return 1;
}else if(value1>value2){
return -1;
}else{
return 0;
}
}
var values = [0,1,5,10,15];
values.sort(compare);
console.log(values); //15,10,5,1,0
九、操作方法
1、concat()方法基于当前数组中的所有项创建一个新数组
var colors = ['red','green','blue'];
var colors2 = colors.concat('yellow',['black','brown'])
console.log(colors);
console.log(colors2);
2、slice()方法能够基于当前数组中一或多个项创建一个新数组。slice()方法可以接受一或两个参数,即要返回项的起始和结束位置。
var colors = ['red','green','black','blue','purple'];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);
console.log(colors2);
console.log(colors3);
var colors3 = colors.slice(1,4,'orange','yellow')
十、位置方法
1、indexOf(),lastIndexOf()方法接收两个参数,要查找的项和可选的表示查找起点位置的索引
var numbers = [1,2,3,4,5,4,3,2,1];
//indexOf,从左往右,查找第一个位置
console.log(numbers.indexOf(4)); //3
//lastIndexOf()从左往右查找最后出现的位置
console.log(numbers.lastIndexOf(4)); //
十一、迭代方法
1、every():对数组对每一项运行给定函数,如果函数对每一项都返回true,则返回true
var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item,index,array){
return item>2
})
console.log(everyResult); //false
2、some():对数组中对每一项运行给定函数,如果函数对任何一项返回true,则返回true
var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.some(function(item,index,array){
return item>2
})
console.log(everyResult); //true
3、filter():对数组中对每一项运行给定函数,返回该函数会返回true的项组成的数组
var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.filter(function(item,index,array){
return item>2
})
console.log(everyResult); //[3,4,5,4,3]
4、map():对数组中对每一项运行给定函数,返回每次函数调用对结果组成对数组
var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.map(function(item,index,array){
return item*2
})
console.log(everyResult); //[2,4,6,8,10,8,6,4,2]
5、forEach():对数组中对每一项给定函数,这个方法没有返回值
var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.forEach(function(item,index,array){
//执行某些操作
})
十二:归并方法
1、reduce()和reduceRight()。这两个方法都会迭代数组都所有项,然后构建一个最终返回都值。reduce()方法从数组都第一项开始
逐个遍历到最后。而reduceRigth()则从数组到最后一项开始,向前遍历到第一项
eg1:
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev,cur,index,array){
return prev + cur;
})
console.log(sum); //
eg2:
var values = [1,2,3,4,5];
var sum = values.reduceRight(function(prev,cur,index,array){
return prev + cur;
})
console.log(sum); //
引用类型(二):Array类型的更多相关文章
- 从头开始学JavaScript (十二)——Array类型
原文:从头开始学JavaScript (十二)--Array类型 一.数组的创建 注:ECMAscript数组的每一项都可以保存任何类型的数据 1.1Array构造函数 var colors = ne ...
- JavaScript引用类型之Array类型一
一.简介 除了Object之外,Array类型恐怕是ECMAScript中最常用的类型了.下面就来分析ECMAScript中的数组与其他语言中的数组的异同性: 1.相同点: (1)他们都是数据的有序列 ...
- 引用类型之Array类型
Array类型 ECMAScript数组与其它语言数组一样,都是数据的有序列表.但是ECMAScript数组的每一项可以保存任何类型的数据.而且,ECMAScript数组是可以动态调整的. 1.创建和 ...
- JavaScript引用类型之Array类型API详解
Array类型也是ECMASCRIPT中最常见的数据类型,而且数据的每一项可以保存任何类型的数值,而且数组的大小是可以动态调整的,可以随着数据的添加自动增长以容纳新的数据.下面,总结数据的一些常用方法 ...
- JavaScript之引用类型(Array类型)
除了Object类型,Array是ECMAScript中最常用的类型了. 与其他语言不同的是,ECMAScript数组的每一项可以保存任何类型的数据. 而且,ECMAScript数组的大小是可以动态调 ...
- Javascript高级编程学习笔记(13)—— 引用类型(2)Array类型
除了Object类型之外ECMA中最常用的引用类型可能就是Array类型了 并且ECMA中的数组类型和其他大多数编程语言的数组类型存在着很大的区别 今天就介绍一下JS中的Array的特别之处 区别 1 ...
- C# 语法二 值类型引用类型
1.值类型 2.引用类型 一 值类型 值类型存放在栈中,引用类型存放在堆中. 值类型有:数值.布尔.字符,例如:int i;bool i2;char cr='a'; 二 引用类型 大多数类型是引用类型 ...
- 3、二、c# 面向对像编程。类,结构、C# 数据类型(引用类型、值 类型、指针类型)、ref参数与out参数、方法的重载、静态类型与静态成员、继承与多态、委托与事件
一.类 定义类使用class关键字. <access specifier> class class_name { // member variables 成员变量 <access s ...
- 【.Net基础二】浅谈引用类型、值类型和装箱、拆箱
目前在看CLR via C#,把总结的记下来,索性就把他写成一个系列吧. 1.[.Net基础一] 类型.对象.线程栈.托管堆运行时的相互关系 2.[.Net基础二]浅谈引用类型.值类型和装箱.拆箱 引 ...
- JavaScript的进阶之路(三)引用类型之Object类型和Array类型
引用类型 Object类型 function a(num){ if(num>3){ a(--num); } console.log(num); } a(5); //如何创建对象的实例 var o ...
随机推荐
- 22-----BBS论坛
BBS论坛(二十二) 22.1.七牛js上传轮播图图片 (1)common/zlqiniu.js 'use strict'; var zlqiniu = { 'setup': function (ar ...
- java多线程-创建线程
大纲: Thread创建线程. Runnable接口. Callable接口. 小结 一.java创建线程--继承Thead类 创建一个类继承Thead类,并重写run方法. class Test { ...
- 文献综述一:基于UML技术的商品管理系统设计与实现
一.基本信息 标题:基于UML技术的商品管理系统设计与实现 时间:2018 出版源:福建电脑 文件分类:uml技术的研究 二.研究背景 使用 UML 技术对商品管理系统进行了分析与研究,使用户对商品信 ...
- java多线程(二)
线程的阻塞状态: 参考java多线程(一)多线程的生命周期图解,多线程的五种状态. 1.1 join(),如果在A线程体里面执行了B线程的join()方法,那么A线程阻塞,直到B线程生命周期结 ...
- C#继承 多态
1.继承 允许我们根据一个类来定义另一个类.已有的类被称为的基类(父类),新的类被称为派生类(子类). 单一继承:只能有一个基类,一个基类可以派生出多个派生类,一个类别只可以继承自一个父类. 多重继承 ...
- python的数字
1.整数 与其它语言不同点两个乘号(**)代表 乘方运算 .前面代表底数,后面代表指数. 2.浮点数 它的小数位数可能是不确定的,需要注意 3.使用str()避免错误 在输出字符串时,可以避免类型错误 ...
- 合唱队(华为OJ)
描述 计算最少出列多少位同学,使得剩下的同学排成合唱队形 说明: N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左 ...
- 弹性布局 Flexible Box
页面中任何一个元素都可以指定为 弹性布局(Flex) 属性:display 取值: 1.flex 将块级元素变为弹性布局容器 2.inline-flex 将行内元素变为弹性布局容器 兼容性 ...
- 浅谈position、table-cell、flex-box三种垂直(水平)居中技巧
一.首先是喜闻乐见的position方法,经典且万能,用法如下: 父元素{ position:relative; } 子元素{ position:absolute; top:50%; left:50% ...
- node安装express时找不到pakage.json文件;判断安装成功?
正常安装命令:express install express --save 报错如下:no such file or directory,open 'C:\Users\Administrator\pa ...