引用类型(object、array)
1.Object类型
1)创建方法:
//使用new加object构造函数
var person = new Object();
person.name = "aaa";
person.age = 29; //对象字面量表示法
var person = {
name:"aaa",//注意符号 逗号
age:29
};//注意符号 分号
使用对象字面量语法时,属性名也可以使用字符串
留空花括号 var person = {}; //相当于new Object()
2)访问对象属性:
点表示法(建议使用)
alert(person.name);
方括号表示法
将访问的属性用字符串的形式放在方括号内,主要用于处理属性名中包含会导致语法错误的字符(例如空格)以及关键字或保留字
alert(person["name"]);
2.Array类型
数组中的每一项可以保存任何数据类型
数组的大小是可以动态调整的,即可以随着数据的添加自动增长以容纳新数据
1)创建方法
使用Array构造函数,其中new操作符可以省略(小括号)
var colors = new Array();
var colors = new Array(20);//创建长度为20的数组,注意不是值为20!!!!
var colors = new Array("red");//创建含一项,内容为字符串“red”的数组
var colors = new Array("red","blue","green");//创建含三项的数组
数组字面量表示法(中括号)
var colors = [];//空数组
var colors = ["red","blue","green"];//创建一个包含三个字符串的数组
2)length
可以通过设置length属性,从数组末尾移除项或向数组中添加新项
//移除项
var colors = ["red","blue","green"];
color.length = 2;
alert(color[2]);//undefined //新增项的值为undefined
var colors = ["red","blue","green"];
color.length = 4;
alert(color[3]);//undefined //在数组末尾添加新项
var colors = ["red","blue","green"];
colors[color.length] = "black";//在3的位置添加新颜色 //在99处插入一个值,数组新长度变为100,位置3~99并不存在,访问他们将返回undefined
var colors = ["red","blue","green"];
colors[99] = "black";
alert(colors.length);//
3)栈方法
栈是一种LIFO(last-in-first-out,后进先出)的数据结构
push()方法可以接受任意数量的参数,把他们逐个添加到数组末尾,并返回修改后数组的长度
var colors = new Array();
var count = colors.push("red","green");
alert(count);//3
pop()方法可以从数组末尾移除最后一项,减少数组的length值,然后返回移除的项
var colors = new Array("red","green","black");
var item = colors.pop();
alert(item);//"black"
alert(colors.length);//
4)队列方法
队列数据结构的访问规则是FIFO(first-in-first-out,先进先出),在列表的末端添加项,从列表的前端移除项
push()方法可以接受任意数量的参数,把他们逐个添加到数组末尾,并返回修改后数组的长度
shift()方法可以移除数组中的第一个项并返回该项,同时将数组长度减一
unshift()方法可以在数组前端添加任意个项并返回新数组的长度
4)重排序方法
reverse()方法反转数组的顺序
sort()方法默认升序排列数组项(比较得到的字符串)
var values = [1,0,5,10,15];
values.sort();
alert(values);//0,1,10,15,5
sort()可以接受一个比较函数作为参数
//比较函数(升序)
function compare(value1,value2)
{
if(value1 < value2)
return -1;
else if(value1 > value2)
return 1;
else
return 0
}
//比较函数简化为
function compare(value1,value2)
{
return value1 - value2;//降序为 value2 - value1
} var values = [1,0,5,10,15];
values.sort(compare);
alert(values);//0,1,5,10,15
5)操作方法
concat()方法:先创建当前数组的一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组
如果没有参数,就复制当前数组并返回副本
如果参数是一个或多个数组,就将这些数组中的每一项添加到结果数组中
如果传递的是值,就将这些值添加到数组末尾
var colors = new Array("red","green","blue");
var colors2 = colors.concat("yellow",["black","brown"]);
alert(colors);//red,green,blue
alert(colors2);//red,green,blue,yellow,black,brown
slice()方法:基于当前数组的一项或是多项创建一个新数组
一个参数:返回该参数指定位置开始到当前数组末尾的所有项
两个参数:返回起始和结束位置之间的项——包括起始位置,但不包括结束位置
若有负数:就用数组长度加上该数来确定相应的位置(在包含5项的数组中,slice(-2,-1)==slice(3,4))
var colors = new Array("red","green","blue","yellow","purple");
var colors2 = colors.slice(1);
var colors2 = colors.slice(1,4);
alert(colors2);//red,green,blue,purplle
alert(colors3);//red,green,blue
splice()方法:
删除(2个参数):要删除的第一项的位置、要删除的项数
splice(0,2)//删除数组前两项
插入(3个参数):起始位置、0、要插入的项
splice(2,0,“red”,“green”)//从位置2插入两个字符串
替换(3个参数):起始位置、要删除的项、要插入的项
splice(2,1,“red”,“green”)//从位置2删除一项并插入两个字符串
返回一个包含原始数组中删除的项的数组
6)位置方法(实现查找功能)
indexOf():从数组的开头开始向后查找
lastIndexOf():从数组的末尾开始向前查找
这两个方法都可以接受两个参数:要查找的项、查找起点的索引
返回要查找的项在数组中的位置(没找到返回-1)
7)迭代方法
接受两个参数:在每一项上运行的函数(接受数组项的值、该项在数组中的位置、数组对象)、运行该函数的作用域对象
every():对数组中的每一项运行给定函数,若该函数对于每一项都返回true,则返回true
var number = [1,2,3,4,5,4,3,2,1];
var everyResult = number.every(function(item,index,array)
{
return (item > 2);
});
alert(everyResult);//false
some():对数组中的每一项运行给定函数,若该函数对于任一项返回true,则返回true
var number = [1,2,3,4,5,4,3,2,1];
var someResult = number.some(function(item,index,array)
{
return (item > 2);
});
alert(someResult);//true
forEach():对数组中的每一项运行给定函数,无返回值,相当于for循环
filter():对数组中的每一项运行给定函数,返回true的项组成的数组
var number = [1,2,3,4,5,4,3,2,1];
var filterResult = number.filter(function(item,index,array)
{
return (item > 2);
});
alert(filterResult);//[3,4,5,4,3]
map():对数组中的每一项运行给定函数,返回每次调用函数的结果组成的数组
var number = [1,2,3,4,5,4,3,2,1];
var mapResult = number.map(function(item,index,array)
{
return item * 2 ;
});
alert(mapResult);//[2,4,6,8,10,8,6,4,2]
8)归并方法
reduce():从数组第一项开始
reduceRight():从数组最后一项开始
接受两个参数:再每一项上调用的函数(前一个值、当前值、项的索引数组对象)、作为归并基础的初始值
//求和
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev,cur,index,array){
return prev + cur;
});
alert(sum);//
引用类型(object、array)的更多相关文章
- [JS高程]引用类型(Object、Array)
引用类型:Object.Array Object: person.name =>推荐,除非必须使用变量([])来表示 person["name"] 区别:[]可以通过变量 ...
- JavaScript高级编程——引用类型、Array数组使用、栈方法
JavaScript高级编程——引用类型.Array数组使用.栈方法 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999 ...
- javascript学习笔记 - 引用类型 Object
引用类型是一种数据结构,也称作对象定义,类似于类的概念. 对象是引用类型的实例. javascript引用类型有:Object, Array, Date, RegExp, Function 使用new ...
- 再谈js对象数据结构底层实现原理-object array map set
如果有java基础的同学,可以回顾下<再谈Java数据结构—分析底层实现与应用注意事项>:java把内存分两种:一种是栈内存,另一种是堆内存.基本类型(即int,short,long,by ...
- JS 深度拷贝 Object Array
JS 深度拷贝 Object Array function cloneObj(o) { var isArray = o instanceof Array; var isObject = o insta ...
- 速战速决 (2) - PHP: 数据类型 bool, int, float, string, object, array
[源码下载] 速战速决 (2) - PHP: 数据类型 bool, int, float, string, object, array 作者:webabcd 介绍速战速决 之 PHP 数据类型 boo ...
- (object) array
<?php $current_language = (object)array ( 'name' => '火星文', 'timezone' => 'Asia/Tokyo', 'aut ...
- 小程序的picker的range 是一个 Object Array (对象数组)
小程序的picker的range 是一个 Object Array (对象数组) 数据: array: [{'id':1,'name':'Android'},{'id':2,'name':'IOS'} ...
- JavaScript之引用类型(Array类型)
除了Object类型,Array是ECMAScript中最常用的类型了. 与其他语言不同的是,ECMAScript数组的每一项可以保存任何类型的数据. 而且,ECMAScript数组的大小是可以动态调 ...
- Invalid default value for prop "value": Props with type Object/Array must use a factory function to return the default value.(props default 数组/对象的默认值应当由一个工厂函数返回)
Invalid default value for prop "value": Props with type Object/Array must use a factory fu ...
随机推荐
- HTML入门教程
什么是 HTML? HTML(Hyper Text Markup Language)超文本标记语言,是用来描述网页的一种语言,不是一种编程语言,而是一种标记语言 (markup languag ...
- Weblogic的安装与配置
安装准备 下载WebLogic10.2 for x86 linux安装文件: 安装RHEL 5.4: 检查Linux环境,确保安装目录所在的文件系统空闲空间在2G以上.如果空间不足,则应扩展root ...
- spring 笔记1: mvn 中Controller方法的参数不能是嵌套类(内部类)。
最近做spring开发,个人认为,Controller和客户端js通讯时传递的参数类 只使用某几个方法,为了减少对其他功能的影响,想把参数类定义为Controller类的 嵌套类(内部类).但是实践发 ...
- If you only do what you can do you'll never be more than you are now.
If you only do what you can do you'll never be more than you are now. 如果你只是做你力所能及的事,你将不会有所进步:
- Thinkphp学习回顾(一)之基本结构目录
TP框架的学习一般都是从了解框架的基本结构开始的,每个文件都有其专属的作用,我的TP框架的回顾也从基本结构开始讲起. 一.ThinkPHP的获取 http://www.thinkphp.cn 这是 ...
- MongoDB由于目标计算机积极拒绝,无法连接
遇到这个问题的时候,可以通过以下步骤解决: 1.打开Mongo安装包:进入Mongo下的data文件夹下的db文件夹,找到Mongod.lock,删除. 2.在命令行中输入: mongod.exe - ...
- CSS中的浮动
这是一个重点内容,在做网页布局的时候,经常用到,所以在这里单独将其列出来小结!
- 解决对含有第三方jar包的项目打包出现java.lang.NoClassDefFoundError问题
用eclipse普通的打包方式,对含有第三方jar包的项目进行打包.调用方法后一只出现java.lang.NoClassDefFoundError问题. 从网上搜寻,很多都是在MANIFEST.MF文 ...
- 【前端】制作一个handlebars的jQuery插件
(function($) { var compiled = {}; $.fn.handlebars = function($srcNode, data) { // 取出模版内容 var src = $ ...
- LRU页面置换算法
本文以序列长度20的{ 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};以及页面4:为例: #include <stdio.h> #define Init ...