***数组对象
**检测是否为数组
*instanceof运算符
instanceof可以判断一个对象是否是某个构造函数的实例
*Arrary.isArray()
Arrary.isArray()用于判断一个对象是否为数组,isArray()是html5中提供的方法
***添加删除数组元素的方法
*数组中有进行增加、删除元素的方法
这四种方法会直接修改数组
pop和shift一组,理解为推出数组中已有元素。
push:在数组的尾部加入一个元素,并返回原有length+1的长度
var arr=[1,2,3];
console.log(arr.push(4));//4
console.log(arr);//[1234]
unshift:在数组的头部加入一个元素,并返回原有length+1的长度。
var arr = [1,2,3];
console.log(arr.unshift(4));//4
console.log(arr);//[4,1,2,3]
pop:删除数组尾部第一个元素,并返回这个元素。
var arr = [1,2,3];
console.log(arr.pop())://3
console.log(arr);//[1,2]
shift:删除数组头部的第一个元素,并返回这个元素。
var arr = [1,2,3]:
console.log(arr.shift());//1
console.log(arr);//[23]
总结:
1.这四种方法都会直接修改原数组
2.push和unshift分别为尾部和头部添加元素,pop和shift分别为尾部和头部删除元素。
3.push和unshift返回的是修改后的数组length,pop和shift返回的是被删除的元素。
***数组排序
数组中有对数组本身排序的方法
reverse() 颠倒数组中元素的顺序,无参数 该方法会改变原来的数组返回新数组
sort() 对数组的元素进行排序 该方法会改变原来的数组饭回新数组
注意:sort方法需要传入参数来设置升序、降序排序
如果传入"function(ab){returna-b;}”,则为升序
如果传入"function(ab){returnb-a}”,则为降序
**数组索引方法
indexOf() 数组中查找给定元素的第一个索引 如果不存在则返回-1
lastIndexOf() 在数组中的最后一个的索引 如果不存在则返回-1
**数组转换为字符串
toString() 把数组转化成字符串,逗号分割每一项
join('分隔符') 方法用于把数组中的所有元素转化为一个字符串
注:join方法如果不传入参数,则按照“,”拼接元素
**其他方法
concat() 连接两个或多个数组 不影响原数组 【返回一个新数组】
slice() 数组截取slice(begin,end) 【返回被截取项目的新数组】
splice() 数组删除splice(第几个开始,要删除个数) 【返回被删除项目的新数组,会影响原原数组】
数组排序
<script>
//对数组本身排序的方法
var arr = [1,2,3,4,5];
arr.reverse();//颠倒数组中元素的顺序
console.log(arr);
var arr1 = [13,96,4,7,21,109];
arr1.sort(function(a,b){return a-b;}); //升序
console.log(arr1);
arr1.sort(function(ab){return b-a;});//降序
console.log(arr1);
//数组索引
var arr2 = [1,2,3,4,5,4,6,9,10];
console.log(arr2.indexOf(5));//4
console.log(arr2.indexOf(11));//-1
console.log(arr2.indexOf(15));//-1
//当数组中没有该元素则输出-1
console.log(arr2.indexOf(4));//3
console.log(arr2.lastIndexOf(4));//5 */
//数组转换为字符串
var arr3 = [1,2,3,4,5,4,6,9,10];
console.log(arr3.join('-'));
</script>
数组降重
<script>
var arr = [1, 2, 3, 4, 5, 4, 6, 5, 1];
function deduplication(arr){
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
return newArr;
}
console.log(deduplication(arr));
</script>
***字符串对象
三个特殊引用类型:String、Number、Boolean
基本包装类型就是把简单数据类型包装成复杂数据类型,这样基本数据类型就有了属性和方法。
字符串有不可变性(只改变地址,不改变原有内存。大量拼接时会产生效率问题)
根据字符串返回位置:
indexOf('要查找的字符',开始的位置) 【找不到-1】
lastindexOf() 【从后往前找,只找第一个匹配的】
查找字符串中出现最多的字符以及个数
<script>
var str = 'abcoefoxyozzopp';
var obj = {};
for (var i = 0; i < str.length; i++) {
var char = str.charAt(i);
if(obj[char]){
obj[char]++;
}else{
obj[char]=1;
}
}
console.log(obj);
var max = 0;
var char1 = '';
for(var k in obj){
if(obj[k] > max){
max=obj[k];
char1=k;
}
}
console.log('出现最多的字符是'+char1);
console.log('出现了'+max+'次');
</script>
根据位置返回字符:
charAt(index) 返回指定位置的字符
charCodeAt(index) 获取指定位置处字符的ASCII码
str[index] 获取指定位置处字符 (等效于charAt())
---------------------------------------------------------------------------------------------------------------------------------
concat(str1,str2,str3...)
substr(start,end)截取
slice()截取 end取不到
substring()截取 end取不到 不接受负值
replace(被替换的字符串,要替换为的字符串)方法:字符串替换
split("分割字符"):用于切分字符串,将字符串切分为数组
简单数据类型:存储时是存储值本身
复杂数据类型:存储时存地址(即引用)
栈:存储简单类型
堆:存储复杂类型
简单类型传参:函数的形参可以看做是一个变量,把简单类型传给形参的时候,直接调用栈
复杂类型传参:把引用类型传给形参的时候,其实是把变量在栈空间保存的堆地址赋值给形参,形参和实参保存同一个堆地址,所以操作的是同一个对象