1.Object类型
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
/*
创建Object实例的方式:
1.new操作符
var person = new Object();
person.name = 'zhangsan';
person.sex = '男';
2.字面量
var person = {
name:'zhangsan';
sex:'男';
}
访问对象属性
1.点语法
alert(person.name);
2.方括号语法 要访问的属性以字符串形式放在方括号里 也可以放变量
alert(person['name']);
var str = 'name';
alert(person[str]);
* */
var person = new Object();
person.name = 'zhangsan';
person.gotoschool = function(){
alert(1);
};
person.gotoschool();
</script>
</body>
</html>
2.Array类型
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Array类型</title>
</head>
<body>
<script type="text/javascript">
/*
ECMAScript 数组的每一项可以保存任何类型的数据
创建数组
1.构造函数
var array0 = new Array();
var array1 = new Array(10); //创建一个length为10的数组
var array2 = new Array('html','css','js') //创建一个包含3个字符串的数组
2.字面量
var arr = [1,2,3];
获取数组中的元素
通过下标访问
var arr = [1,2,3,4];
alert(arr[0]); //获取数组第一个元素 1
arr[4] = '5'; //新增第五个元素 数组length变为5
数组的length
可以通过设置length,向数组中增加元素或者删除元素 可以用 length=0; 来清空数组
1.检测数组
对于一个全局作用域 可以用instanceof操作符
如果一个网页中包含多个框架,存在2个以上不同的全局执行环境,从而存在2个以上不同版本的Array构造函数
可以用Array.isArray()方法,这个方法的目的是最终确定某个值是不是数组,不管它始终爱那个全局执行环境找那个创建的
var arr = [1,2,3,4];
arr[6] = 1;
alert(arr[6]); //获取数组第一个元素 1
if(Array.isArray(arr)){
//对数组进行某些操作
alert(arr);
}
if(arr instanceof Array){
alert(arr);
}
alert(arr.length);
2.转换方法
继承的方法
toString() 把数组转换为字符串 ,返回结果
valueOf() 返回数组对象的原始值
toLocaleString() 把数组转换为本地数组 返回结果
数组的方法
join() 使用不同的分隔符来构建这个字符串 参数作为分隔符 返回包含所有数组元素的字符串
var array0 = ['html','css','js'];
alert(array0.toString()); //html,css,js
alert(array0.valueOf()); //html,css,js
var arr1 = array0.toLocaleString();//html,css,js
alert(arr1);
alert(array0.join('&'));//html&css&js 如果不给join()方法传入任何值,或者传入undefined 默认使用 , 分隔符
3.栈方法
栈数据访问规则LIFO(last-in-first-out,后进先出)
push()可以接受任意数量的参数,把它们逐个添加到数组末尾 返回 修改后的 数组长度
pop()方法从数组末尾移除最后一个元素,减少数组的length值, 返回被移除的元素
var arr = ['html','css','js'];
alert(arr.push('html5','css3')); //5
alert(arr); //'html','css','js','html5','css3'
alert(arr.pop()); // css3
alert(arr); // 'html','css','js','html5'
4.队列方法
队列数据访问规则FIFO(first-in-first-out,先进先出)
push()
shift()方法从数组前端移除第一个元素,减少数组的length值 返回被移除的元素
unshift()可以接受任意数量的参数,把它们逐个添加到数组前端 返回 修改后的 数组长度
var arr = ['html','css','js'];
alert(arr.push('html5'));//4
alert(arr.shift()); //html length==3
alert(arr.unshift('html')); //length==4
alert(arr); //html,css,js,html5
5.重排序方法
reverse() 倒序排序
sort() 升序排序 sort()方法会调用每个数组元素的tostring()转型方法,然后比较得到的字符串, 所以即便数组元素是 数值 ,
sort()方法也比较的是 字符串, 这个排序方法明显不是我们想要的。 所有 sort()方法可以接收一个比较函数作为参数
以便我们指定那个值位于那个值的前面
reverse()h和sort()方法返回的是 经过 排序后的数组 是把原数组排序,而不是生成了一个新的数组
var arr = [1,2,3,14,5,6];
alert(arr.reverse());//6,5,14,3,2,1
alert(arr); //6,5,14,3,2,1
alert(arr.sort());//6,1,14,2,3,5
alert(arr); //6,1,14,2,3,5
function compare(value1,value2){
// if(value1<value2){
// return -1;
// }else if(value1>value2){
// return 1;
// }else{
// return 0;
// }
return value1 - value2;
}
alert(arr.sort(compare));//1,2,3,5,6,14
alert(arr); //1,2,3,5,6,14
6.操作方法
concat()基于当前数组中的所有元素创建一个新的数组 没有参数的话返回复制当前数组返回 参数是数组的话
将参数中的没一个元素都添加到结果数组的末尾 参数不是数组的话 就直接将值添加到结果数组的末尾
slice()基于当前数组中的一个或多个元素创建一个新的数组 可接收一个或两个参数, 即返回元素的起始和结束 位置
一个参数的话,返回参数指定位置到当前数组末尾的所有元素
两个参数,返回起始和结束位置之前的元素(不包括结束位置的元素)
concat()和slice()都不会影响原始数组 新建了一个数组
var arr = ['html','css','js'];
var arr1 = arr.concat(['html5','css3']);
alert(arr1); // html,css,js,html5,css3
alert(arr1.slice(1,3)); // css,js
alert(arr);// html ,css , js
splice()主要用来向数组中插入元素 始终都会返回一个数组,该数组中包含从原始数组中删除的元素(没有删除,则返回空)
删除:可以删除任意数量的元素,传入两个参数:要删除的第一个元素的位置和要删除元素的个数
插入:可以向指定位置插入任意数量的元素 传入三个参数:起始位置、要删除元素个数、要插入的元素 要插入元素数量不受限制
替换:可以向指定位置插入任意数量的元素,并且删除任意数量的元素 传入三个参数:起始位置、要删除元素个数、要插入的元素
splice()会改变原始数组
var arr = ['html','css','js'];
alert(arr.splice(0,1));//html 返回删除的元素
alert(arr); // css,js
alert(arr.splice(0,0,'html')); // ‘’ 返回删除的元素 因为是插入元素 则为空
alert(arr); // html,css,js
alert(arr.splice(0,2,'html5','css3')); // html,css 返回删除的元素
alert(arr);// html5,css3,js
7.位置方法
indexOf() 两个参数:要查找的元素、查找起点位置(可选 ) 从数组位置0开始往后查找
lastIndexOf() 两个参数:要查找的元素、查找起点位置(可选 ) 从数组位置(length-1)开始往前查找
这连个方法都返回要查找元素 位置 , 没有找到返回-1. 查找的时候使用 === 操作符
var arr = [1,2,3,4,5,6,7,8,9];
alert(arr.indexOf(4));//3
alert(arr.lastIndexOf(4));//3
alert(arr.indexOf('4')); // -1
alert(arr);
8.迭代方法
every() 对数组中每一个元素运行给定函数,如果该函数对每一个元素都返回true,则返回true 遇到false则停止
some() 对数组中每一个元素运行给定函数,如果该函数对任意一个元素都返回true,则返回true 遇到true则停止
filter() 对数组中每一个元素运行给定函数,返回 函数返回true的元素组装成的数组
forEach() 对数组中每一个元素运行给定函数,无返回值
map() 对数组中每一个元素运行给定函数,返回函数执行结果的数组
迭代方法都不会修改数组的值
var number = [1,2,3,4,5,6,7,8,9];
var result = number.some(function(value,index,arr){
alert(value+"+"+index+"+"+arr);
return value>1;
});
alert(result);
9.缩小方法
reduce() 从数组的第一个元素开始,逐个遍历到最后
reduceRight() 从数组的最后一个元素开始,向前遍历到第一个元素
pre上一次值 第一次为数组第一个元素 以后为函数上一次返回的值
cur 当前元素的值 第一次为第二个元素
index 元素位置 从1开始
arr 数组
reduceRight() 跟reduce() 作用相似 不过是方向相反而已
var number = [1,2,3,4,5,6,7,8,9];
alert(number.reduce(function(pre,cur,index,arr){
alert(pre+"+"+cur+"+"+index+"+"+arr);
return pre+cur;
}));
* */
</script>
</body>
</html>