你有多久没有静下心来看一下基础了?
JS一些常用的语法
length
返回数组的长度;
如果更改数组的长度,那么数组会从为尾部进行相应调整来满足更改
1、更改的长度小于原长度,截取后面多余的元素。
2、更改的长度大于原长度,从尾部增加相应的空值。
通过索引进行赋值,实际上也是一种更改length的操作,当更改的下标超出了length的长度,数组也会补充相应的空值
var arr = [1, 2, 3.14, 'Hello', null, true];
console.log(arr.length);//6
arr.length = 3;
console.log(arr);//从尾递减[1, 2, 3.14]
arr.length = 10;
console.log(arr);//[ 1, 2, 3.14, <7 empty items> ]
arr = [1, 2, 3];
arr[5] = 'x';
console.log(arr);//通过索引赋值,如果超了范围,会引起数组大小的变化,[ 1, 2, 3, <2 empty items>, 'x' ]
indexOf
返回指定元素的下标,没如果没有该元素,就会返回-1,注意元素的类型,字符类型和整数类型的区别。
var arr = [10, 20, '30', 'xyz'];
console.log(arr.indexOf(10));//0
console.log(arr.indexOf(30));//无30,返回-1
console.log(arr.indexOf('30'));//2
slice
JS中的切片,传入两个元素,第一个是切片开始的位置,元素下标,第二个为切片结束的位置,元素的下标,如果该参数大于数组length,那么视为到结尾;返回值为切片内的元素,如果只有一个参数,那么这个参数为数组切片开始的下标,终点在数组末尾;如果没有参数,那么将整个数组作为切片内容,有点儿copy的意思。
ar arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
arr.slice(0,3);
console.log(arr);
console.log(arr.slice(0,3));//从序号开始切片
console.log(arr.slice(4,10));//[ 'E', 'F', 'G' ]
console.log(arr.slice(3))//只有一个元素,则从该序号向后
console.log(arr.slice());
var aCopy = arr.slice();
console.log(arr === aCopy);//false
push
从数组尾部插入元素,返回该数组更新后的length。
var arr = [1,2];
arr.push(3);
console.log(arr.push(2));//返回长度 4
pop
从数组尾部删除元素,返回删除的该元素。如果该数组为空,则返回[]
var arr = [1,3];
console.log(arr.pop());//3
arr.pop();
console.log(arr);//空[]
unshift
从数组头部插入元素,返回更新后数组的length
var arr = [1, 2];
arr.unshift('A', 'B');
console.log(arr);//从头添加元素[ 'A', 'B', 1, 2 ]
console.log(arr.unshift('C'));//返回长度 5
shift
从数组头部删除元素,返回删除的元素。如果数组为空则返回undefined
var arr = [1, 3];
arr.shift();
console.log(arr);//去掉第一个元素,3
console.log(arr.shift());//返回去掉的元素 3
console.log(arr.shift());//undefined
sort
排序,按照正序排列,返回排序完的数组
var arr = ['B', 'C', 'A'];
arr.sort();
console.log(arr.sort());//同上
reverse
将数组倒序排列,反转,返回倒序的数组
var arr = ['one', 'two', 'three'];
arr.reverse();
console.log(arr.reverse());//反转 同上
splice
更新数组,传入最多三个参数,第一个参数是从指定元素下标开始,第二参数是删除几个元素,第三个参数是在删除的位置增加相应的元素。如果之传入一个参数,那么从该下标开始到数组结尾全部删除;如果传入两个参数,则只进行删除操作,其余的不会进行操作。返回值为删除的元素。
var arr = ['Microsoft', 'Apple', 'Yahoo', 'AOL', 'Excite', 'Oracle'];
//arr.splice(2, 3, 'Google', 'Facebook');
//arr.splice(2);//从序号为2开始到后全删
//arr.splice(2, 3);//删除后不会补充
//arr.splice(2, 'Google');//不会进行操作
//console.log(arr);//从序号为2的元素开始删除3个元素,然后在该位置增加后面的元素
//console.log(arr.splice(2, 3, 'Google', 'Facebook'));//删除的几个元素
console.log(arr.splice(2,0,'Google'));//[]没有删除的元素
concat
合并两个数组,对于原数组不会产生影响。
var arr = ['A', 'B', 'C'];
var added = arr.concat([1,2,3]);
console.log(added);//合并两个数组,原数组不会受到影响
var brr = [1, 2, 3];
var added1 = arr + brr;
console.log(added1);
var arr = ['A', 'B', 'C'];
console.log(arr.concat(1, 2, [3, 4]));//[ 'A', 'B', 'C', 1, 2, 3, 4 ]
console.log(arr);//无影响
join
只有一个参数,传入一个字符作为参数,将数组转化为以该字符连接的字符串,对原数组无影响
var arr = ['A', 'B', 'C', 1, 2, 3];
arr.join('-');
console.log(arr);
console.log(arr.join('-'));//返回连接的字符串