Object类型
两种声明方式:
1. 使用new,如下:var person = new Object() ;
person.name = 'Ben' ;
person.age = 18 ;
2. 使用对象字面量定义对象
var person = {
"name" : 'Ben' ,
"age" : 18
};
但是,要注意的是,使用对象字面量来声明的话是不会调用Object的构造函数的.
Array类型
Array的声明方式也有几种方式,这里直接陈列出来:
var colors = new Array(20) ; //这里指的是声明一个长度为20的数组
var colors = new Array('red', 'blue', 'white') ; //这里指的是声明一个包含三个颜色的数组
这两种方式可能会引起一个疑惑,所以规定,若只有一个参数,如果传递的是数值,则会创建包含给定项数的数组;如果是其他类型,则会创建只包含那个值的只有一项的数组。同上面的Object一样,创建数组也可以不用new关键字:
var colors = ['red', 'blue', 'black'];
var colors = [] ;
与Object一样,使用数组字面量方式创建时,不会调用Array构造函数
Array有一个属性叫 length, 可以通过 ' * . length'来获取值,不过特殊在于,该属性不是只读的,因此通过设置该属性,可以从数组的末尾移除项或添加新项。
如下:
var colors = ['red', 'black', 'blue'] ; //此时 colors.length = 3
colors.length = 2 ;
alert(colors[2]) ; //显示 undefined
如果改变length的值更大了,那么多出的几个都会取得undefined值。
var colors = ['red', 'black', 'blue'];
colors[22222] = 'ee';
console.log(colors.length); //此时显示长度为22223 ,其中未赋值的获取到的都会是undefined.
关于检测数组,这里就不再举例了,就是使用 Array.isArray() 方法来判断
接下来就是将数组转换成字符串,可以有两种方法,一个是 toString() 方法,一个是 valueOf() 方法。 最后的结果将每个值拼接成一个字符串,并以逗号分隔。
如果希望得到的字符串不以逗号分隔,那么可以使用数组的join方法:
var colors = ['red' , 'green', 'blue'] ;
alert(colors.join("|"));
Javascript里的数组实现的许多方法,数组本身的方法,或是数据结构方法:
- push :在数组的末尾添加元素,返回新数组的长度
- pop :移除数组的末尾元素,返回被移除的元素(与push组合即为栈)
- shift :移除数组的以一个项,返回被移除的元素(与push组合即为队列)
- unshift:在数组前端添加任意个项,返回新数组长度
- concat:这个方法会先创建当前数组的一个副本。然后将接受到的参数添加到这个副本的末尾,最后返回新构建的数组(可以传入一个字符串,或是一个或多个数组)
- slice :基于当前数组中的一个或多个项创建新数组(xxxx.slice(0,3)即返回xxxx数组的前三个元素组成的数组)
- indexOf:接受一个或两个参数,要查找的项和表示查找起点位置的索引(可选),如果没有第二个参数默认从0开始,从前往后查找
- lastIndexOf:与上面一样,只是从后往前查找
- sort 方法:
- 默认按升序排序,但是,此方法会调用每个元素的toString方法,然后比较得到的字符串,因此,即使数组中每一个都是数值类型的元素,该方法比较的也是字符串,所以在比较后会发现5比10大,所以这种排序往往不能达到目的,所有有了比较函数这个参数
使用如下比较函数即可正常比较数值类型大小:
functin compare(val1, val2){
return val1 -
}
var values = [0, 1, 10, 5, 15 ];
values.sort(compare); //得到 [0, 1, 5, 10, 15]
splice方法:
- 删除元素:指定2个参数,要删除的第一项的位置和要删除的项数。例如 splice(0, 2)即删除前两项
- 插入元素:指定3个或更多参数,起始位置,0(即要删除的项数)和要插入的项,可以插入多个项,跟在第三个元素后面
- 替换元素:即在删除的同时进行插入操作,结合前两个操作即可
数组迭代方法:
均接受两个参数,要在每一个元素上运行的函数和运行该函数的作用域对象---影响this的值。函数会接受三个参数,数组项的值,该项的位置,数组对象本身。
- every:对数组中每一项运行给定函数,如果该函数对每一项都返回true,则返回true
- filter:对数组中每一项运行给定函数,返回该函数会返回true的项组成的数组
- forEach:对数组中每一项运行给定函数,无返回值
- map:对数组中每一项运行给定函数,返回每次函数调用的结果组成的数组
- some:对数组中每一项运行给定函数,如果有任意一个返回true,则返回true
数组缩小方法:
- reduce:方法会迭代数组所有项,构建一个最终返回值。接受两个参数,函数和作为缩小基础的初始值(可选)。函数有四个参数:前一个值,当前值,项的索引,数组对象。
- reduceRight:从右往左,类似reduce