一.数组
- 数组的初始化 有两种:
var arr = new Array();var arr = [1,2,3,4,5];
- 在jsz中输出数组的值等价于调用数组的toString方法
- javascript可以动态的改变数组的长度,并且被截断后的数组后面元素为空。
<script type="text/javascript">
var arr = [1,2,3,4,5];
document.write(arr);//输出为1,2,3,4,5
arr.length = 2;
document.write(arr);//输出为1,2,
arr.length = 5;
document.write(arr);//输出为1,2,,,
</script>
- 数组添加元素和移除元素的方法:
arr.push()//添加元素 返回结果为新数组长度
arr.pop()//弹出元素 返回值为移除的结果
arr.shift() //从头部移除一个元素 返回值为移除的元素
arr.unshift() // 从头部添加 返回值为数组的长度
<script type="text/javascript">
var arr = [1,2,3];
document.write(arr.push(4,5));//输出为5
document.write(arr)//输出为1,2,3,4,5
document.write('-------------');
document.write(arr.pop(1));//输出为5
document.write(arr);//输出为1,2,3, 4
document.write('-------------');
document.write(arr.shift());//输出为1
document.write(arr);//输出为2,3,4
document.write('-------------');
document.write(arr.unshift(6,9));//输出为5
alert(arr)//输出为4
</script><hr/>
- 数组的其他操作:
arr.splice(起始位置,截取的个数,第三个以后表示追加) 返回值为移除的元素
arr.slice(起始位置,截取位置) 不操作数据本身
arr.concat() 对数组的合并 不操作数组本身
arr.join(‘-‘)元素之间添加内容,不操作数组本身
arr.sort()数组排序 操作数组本身 可以接一个函数来自定义比较
arr.reverse()将数组倒叙排序
<script type="text/javascript">
var arr1 = [1,2,3];
var arr2 = [4,5,6];
alert(arr1.splice(1, 2, arr2));//输出为2,3
alert(arr1)//输出为1,4,5,6
alert(arr1.slice(1,3));//输出4,5,6
alert(arr1);//1,4,5,6 不操作原本的数组
alert(arr1.concat(arr2));//1,4,5,6,4,5,6
alert(arr2.join('-')); //4-5-6
alert(arr1.sort());//1,4,5,6
alert(arr1.sort(new Function("a","b","return a <b ; ")));//6,5,4,1
alert(arr1.reverse());//4,5,6,1
</script>
注意:alert(arr1.reverse());//4,5,6,1
这里输出并不是想象中1,4,5,6。因为splice函数拼接的arr1返回值是[1,arr2],这里的数组是arr2的引用,并不是arr2的拷贝。后面的排序操作只会对[1,arr2[0]]进行比较操作,并不会对arr2内部进行排序。可以想象如果对arr2进行修改,arr1也会改变,因为arr1存取的只是arr2的引用。
二.Object对象
- Object 对象不能有重复的值
- 对象的属性可以为函数
<script type="text/javascript">
var obj = new Object();
obj.name = 'li';
obj.age = 20 ;
obj.say = Function("alert('hehe')");
for(var attribute in obj){
alert(attribute+obj[attribute]);
}
</script>
三.其他引用类型
- Global对象
global对象中的方法是属于声明的全局变量的 - MATH
- DATE
四.EMAC5 数组的新特性
- 查找元素
- arr.indexOf(“4”)查看其索引值
- arr.indexof(起始位置,所查的参数)
- arr.lastIndexOf();//查找最后一个
- 对数组元素的操作:
- every : 对数组的每一元素行函数的运行 如果都返回true 最后返回true 如果有一个false 则返回false
- some 有一个true 则返回true
- filter 对数组进行一个执行,将过滤后的结果返回
- forEach 循环数组的每一项的值,并执行一个方法
- map 执行方法 ,并返回结果
- reduce 并返回结果 遍历
<script type="text/javascript">
var array =[1,2,3,4,5,6];
var a1 = array.every(function(item,index,array){return item>3;});//true
var a2 = array.some(function(item,index,array){return item>3;});//false
var array1 = array.filter(function(item,index,array){return item>3;});//返回[4,5,6]
var array2 = array.map(function(item,index,array){return item * 2;});//返回[2,4,,6,8,10,12]
//此处不能对 item进行操作 因为item只是一个临时的值,而不是数组的引用。
array.forEach(function(item,index,array){array[index] = item * 2;});
var a3 = array.reduce(function(prev,cur,index,array){return prev+cur;});//返回42 返回的值存在prev这个变量里
</script>