注:这里主要记录的是自己以前不知道的知识
数组的length属性不是只读的,也就意味着通过设置这个属性来向数组中添加某一项或者删除某一项,例如:
var arr = ["从前","有一个","小孩","他"];
arr.length = 3;
console.log(arr)//删除:["从前", "有一个", "小孩"];
arr[arr.length] = "回家的路";
console.log(arr)// 添加:["从前", "有一个", "小孩","回家的路"];
怎么检测一个变量是不是数组呢?
根据以前的知识就可以的解决:instanceof ,但是这种情况并不是绝对的(前提是只有一个全局环境,如果有多个全局环境就不行了),为了保险起见最好还是用 Array.isArray(value)(返回true或者false,ie9以上支持)方法来确定是否是数组。
数组的一些常用的转换方法:
数组.toString():返回由当前数组中的每一项组成的字符串;
数组.valueOf():返回当前的数组;
数组.toLocaleString():返回当前的数组中的每一项所组成的字符串
数组.join(字符串):返回以“字符串”分割的数组中的每一项所组成的字符串(通俗点说就是将数组转化成字符串,如果不传参或者undefined默认是逗号)
但是注意:如果数组中的某一项的值是 null 或者 undefined,那么该值在join()、toLocaleString()、toString()和valueOf()方法返回的结果中以空字符串表示。
字符串的一些常用的操作:
数组.push("内容"):就是要往原始数组的最后添加项(并不一定只能是一项哦!你懂的);
数组.pop():则是删除当前的数组的最后一项,其结果是返回数组的最后一项;
数组.shift()删除并返回当前数组的第一项;
数组.unshift("内容"):在数组的前端添加项并返回此时数组的长度(同上);
数组的排序方法sort和reverse:
其实不看就知道,sort()就是用来排序的,但是sort方法再不进行传参的时候,会先把数组中的每一项先转化成字符串,然后比较字符串来对进行排序。所以一般而言,在利用sort进行排序的时候是需要传参的具体如下,升序:
/*排序*/
var arr2 = [2,34,56,90,1,35,80,21,23,23];
//排序函数
function sortFun(param1,param2){
if(param1>param2){
return 1
}
else if(param1==param2){
return 0
}
else{
return -1
}
}
console.log(arr2.sort(sortFun))
降序就可以利用升序的基础上reverse即可,或者对sort函数参数做手脚。
concat():基于当前数组创建新的数组,当没有传参的时候其实相当于复制了一份当前的数组,当传参的时候,如果传的是数组,就会将数组中的每一项拼接到当前数组副本的后面,如果传的不是数组(就相当与push),就会直接拼到后面(顾名思义就是拼接数组,不操作原数组)
slice():就是截取数组,当里面传一个参数的时候是从参数的那个下标开始截取到最后,当传如两个参数的时候,如果第一个比第二个大,则返回空数组,如果其中一个是负值,则相当于加上数组的长度后再执行slice()方法。如果第一项比第二项小,那么就从第一项(下标)开始截到第二项所指的下标(不包括),不操作原来的数组。
splice():这个方法要分很多种情况,根据传入参数数量的不同:
传两个参数--删除:可以删除任意数量的项,只需指定2个参数:要删除的第一项的位置和要删除的项数,返回的是你截取好的内容 。