数组问题
1.创建数组
(1)利用new创建数组 var 数组名=new Array()
也可以 var arr=new Array(2,3);
(2) 利用数组字面量创建数组(常用)var 数组名=[ ];(var arr=[1,2,'pink'])(数组里的数据类型并不拘泥于一种)
2.数组长度
(1)数组.length
(2) 修改数组长度
arr.length=指定长度。
增加数组索引
(3)检测是否为数组
①instanceof 运算符,可以检测是否为数组
var arr=[ ];
conseole.log(arr instanceof Array);
②Array.isArray(参数);
console.log(Array.isArray(arr));
3.添加删除数组元素的方法
方法名 | 说明 | 返回值 |
push(参数1...) |
末尾添加一个或多个元素,注意修改原数组 |
返回新的长度 |
pop() | 删除数组最后一个元素,把数组长度减一,无参数,修改原数组 | 返回删除的元素的值 |
unshift(参数1...) | 向数组的开头添加一个或多个元素,注意修改原数组 | 返回新的长度 |
shift() | 删除数组的第一个元素,数组长度减一,无参数,修改原数组 | 返回第一个元素的值 |
4.数组排序
方法名 | 数组 | 是否修改原数组 |
reverse() | 颠倒数组中元素的顺序,无参数 | 该方法会改变原来的数组,返回新数组 |
sort() | 对数组的元素进行排序 | 该方法会改变原来的数组,返回新数组 |
reverse:
var arr=[1500,1200,1800,2000,2100];
arr.reverse();
console.log(arr);
sort();
当像使用reverse()一样使用sort()时,数组中若均为单数,则新数组按升序排列。若多位时则会出现错误,因为sort()会先比较最左端的数字进行排序。故一般
var arr=[1500,1200,1800,2000,2100];
arr.sort(function(a,b){
return a-b;//此时为升序,return b-a为降序
})
console.log(arr);
5.获取数组元素索引
方法名 | 说明 | 返回值 |
indexOf() | 数组中查找给定元素的第一个索引 | 如果存在,返货索引号,如果不存在,返回-1 |
lastIndexOf() | 再数组中的最后一个的索引 | 如果存在,返回索引号,如果不存在,返回-1 |
var arr=['pink','green','red','blue'];
console.log(arr.indexOf('pink'));
console.log(arr.lastIndexOf('pink'));
//前者从前往后查找,后者从后往前查找,查找方向不同,但同一元素索引号为定值
</script>
6.数组去重
①目标:把旧数组里面不重复的元素选取出来放到新数组里面。
②核心算法:遍历旧数组,用旧数组里的元素查询新数组,若该元素新数组里不存在,则添加进去,反之不添加。
问题:如何知道此元素新数组里是否存在??利用indexOf().
var arr=[1,3,5,6,3,1,2];
var arr1=[];
for(var i=0;i<arr.length;i++){
if(arr1.indexOf(arr[i])===-1)
arr1.push(arr[i]);
}
console.log(arr1);
7.将数组转换为字符串
方法名 | 说明 | 返回值 |
toString() | 把数组转换成字符串,逗号分隔每一项 | 返回一个字符串 |
join('分隔符') |
用于将数组中的所有元素转换为一个字符串 | 返回一个字符串 |
var arr=[1,2,3];
console.log(arr.toString());
var arr1=['green','red','blue'];
console.log(arr1.join())//green,red,blue
console.log(arr1.join('-'));//green-red-blue;
//相比于toString,join()强大之处在于可以改变转换后的分隔符。
</script>
方法名 | 说明 | 返回值 |
concat() | 连接两个或多个数组,不影响原数组 | 返回一个新的数组 |
slice() | 数组截取slice(begin,end) | 返回被截取项目的新数组 |
splice() | 数组删除splice(begin,end) | 返回被删除项目的新数组,此操作会影响原数组 |
基本包装类型
var str="andy";
console.log(str.length);//可以输出结果为4.
那么,问题来了。只有对象和复杂数据类型才有属性和方法,简单数据类型为何会有length属性呢?
基本包装类型:把简单的数据类型包装为复杂数据类型;
执行时实际上可分为以下三步
//(1)把简单数据类型包装为复杂数据类型 var temp=new String('andy'); //(2)把临时变量的值给str str=temp; //(3)销毁这个临时变量 temp=null;