5.1 引用类型之 Object 和 Array

引用类型

Object

Array

5.1 引用类型

引用类型的值(对象)是引用类型的一个实例。在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起。
新对象是使用new操作符后跟一个构造函数来创建:
var person = new Object();

5.1.1 Object 类型

推荐使用对象字面量创建一个对象:
var person = {
name: “tyt”,
age: 26
}
这里创建了一个person对象,包含2个属性。
访问对象属性时使用的是点表示法,但也可以通过[]来表示,当使用{}时要访问的属性以字符串形式放在括号中:
alert(person.name);
alert(person[ “name”]);

5.1.2 Array 类型
1.检测数组:

对于一个网页或者一个全局作用域而言,使用Instanceof 就能得到满意的结果:

alert(valeu instanceof Array);

但是对于instanceof 来说,它假定只有一个全局执行环境,如果说网页中包含多个框架,其实它就存在两个以上的全局执行环境,从而存在不同的Array 构造函数。
所有ECMAScript5新增了Array.isArray() 方法:

alert( Array.isArray(value) );
2.转换方法:

所有对象都具有 toLocaleString(); toString();valueOf();方法,
toString()返回数组中每个值的字符串形式拼接而成的一逗号分隔的字符串;
valueOf() 返回的是数组:

var a = [];
console.log(typeof a.toLocaleString());//string
console.log(typeof a.toString());//string 
console.log(typeof a.valueOf());//Object

jion()方法可以使用不同的额分隔符来构建返回的字符串

3.数组栈方法

数组可以表现得像栈一样,是一种可以限制插入和删除项的数据结构。
push()方法可以从尾部添加任意项,并返回修改后数组长度;pop()方法可以从数组末尾移除最后一项,并返回最后一项。

4.队列方法:

shift()方法可以移除数组的第一项。并返回;与之对应的是unshift(),可以在数组前端添加任意项,并返回数组长度。

5.重排序方法:

数组中存在两个可以直接使用的重排序方法:reverse(),它是翻转数组项;sort()方法默认按升序排列,sort()方法会调用数组的tostring()方法,比较得到的字符串,确定排序;
对于数值型可使用简单的排序方法:

var arr = [2,4,1,3,67,54,32,78];
function compare (a,b) {
		return a-b;
}
arr.sort(compare);
console.log(arr);//[1,2,3,4,32,54,67,78]
6.操作方法:

concat() 基于当前数组所有项,创建一个新数组:

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

slice()方法基于当前数组一个或多个项创建一个数组,接受一个或两个参数:

var colors = ["red", "green", "blue", "yellow", "purple"];
var colors2 = colors.slice(1);//返回从索引1到结尾的值
var colors3 = colors.slice(1,4);//返回索引从1到3的值
alert(colors2); //green,blue,yellow,purple
alert(colors3); //green,blue,yellow	

splice() 方法:主要用途是向数组中插入项
删除:提供两个参数,要删除的第一项的位置,要删除的项数;返回删除的项;
插入:提供三个参数,起始位置 0(要删除的项数) 要插入的项;返回一个空数组
替换:提供三个参数,起始位置 1(要删除的项数) 要插入的项;返回替换项

var colors = ["red", "green", "blue"];
var removed = colors.splice(0,1); // 删除第一项
alert(colors); // green,blue
alert(removed); // red,返回的数组中只包含一项
removed = colors.splice(1, 0, "yellow", "orange"); // 从位置 1 开始插入两项
alert(colors); // green,yellow,orange,blue
alert(removed); // 返回的是一个空数组
removed = colors.splice(1, 1, "red", "purple"); // 插入两项,删除一项
alert(colors); // green,red,purple,orange,blue
alert(removed); // yellow,返回的数组中只包含一项
7.位置方法:

indexof() 和 lastindexof() :接受两个参数:要查找的项和查找起点索引,一个是从前往后找,一个是从后往前找。没有的情况下返回-1.

8.迭代方法:

数组定义了5个迭代方法,每个方法都接收两个参数:要在每一项运行的函数和(可选)运行该函数的作用域对象——影响this的值。传入方法中的函数会接收三个参数:数组项的值,该项的索引,数组对象本身。
every() :对数组的每一项运行给定函数,每一项都返回true,则返回true;
filter() : 对数组的每一项运行给定函数,返回为true的项组成的数组;
foreach() :对数组的每一项运行给定函数,没有返回值;
map() : 对数组的每一项运行给定函数,返回函数每次调用后的结果组成的数组;
some() : 对数组的每一项运行给定函数,有一项返回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
9.归并方法:

reduce() 和 reduceRight() ,这两个方法会迭代数组所有项,然后构建一个最终返回值:用来求所有项的和:

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
return prev + cur;//prev 前值,cur当前值,第一次迭代发生在第二项上
});
alert(sum); //15

整理不易,希望看到的朋友帮忙点个赞,有什么问题也可以一起交流讨论。有什么不对的希望您在下方留言,帮忙指出错误。

发布了18 篇原创文章 · 获赞 44 · 访问量 3688

猜你喜欢

转载自blog.csdn.net/qq_44758322/article/details/105388079