关于Array的属性和方法
一、关于Array的属性和方法
Array作为JavaScript的内置函数,Array.prototype继承于Object.prototype,同时Array.prototype上内置了很多方法:
concat()、Array()、copyWithin()、entries()、every()、fill()、filter()、find()、findIndex()、forEach()、
includes()、indexOf()、join()、keys()、lastIndexOf()、map()、pop()、push()、reduce()、reduceRight()、
reverse()、shift()、slice()、some()、sort()、splice()、toLocaleString()、toString()、unshift()、values()
var arr = [1, 2, 3]; var arr1 = ['a', 'b', 'c']; var arr2 = ['A', 'B', 'C'];
1、数组的length属性
console.log(arr.length); // 3
注意:
- 数组的length不要随意赋值,如arr.length = 10; ==> 除非要清空数组:arr.length = 0;
- 数组不要通过索引随便赋值,如:arr[10] = 10;
以上行为都会改变数组。
2、数组的方法
a. concat
console.log(arr.concat(arr1, arr2)); //[1, 2, 3, "a", "b", "c", "A", "B", "C"]
==> 返回新的数组,不改变原数组
b. slice(start,end)
console.log(concatArr.slice(0, 3)); // [1, 2, 3] ==> 下标[0, 3) console.log(concatArr.slice(-3)); // ["A", "B", "C"] ==> 倒数第3位到结束 console.log(concatArr.slice(-6, -3)); // ["a", "b", "c"] ==> 倒数下标[-6, -3)
==> slice(start,end)==>返回一个新的数组。包括数组 concatArr 从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有元素。当没有第二个参数时,截止到最后。
==> 当只有一个参数,并且这个参数为负数时,表示从数组尾部开始,-1表示倒数第一开始,n表示倒数第n开始到最后。
slice 可以说和String的slice一模一样,字符串变数组而已,忘了可以去看: 关于String的属性和方法。
如果不给slice()传递任何参数,它就会从头到尾截取所有元素。利用这一点,我们可以很容易地复制一个Array
var arr2 = concat.slice(); // 数组的复制
注意:有些地方说slice()就是对应String的substring()版本,我觉得不对,因为subString的参数都不能为负。
c. indexOf
console.log(concatArr.indexOf('a')); // 3 console.log(concatArr.indexOf('1')); // -1 ==> 代表没有
//注意了,数字1和字符串'1'是不同的元素。
d. push和pop
push()向Array的末尾添加 若干 元素,pop()则把Array的 最后一个 元素删除掉。
注意:若干、最后一个
e. unshift和shift
如果要往Array的头部添加 若干 元素,使用unshift()方法,shift()方法则把Array的 第一个 元素删掉。
注意:若干、第一个
f. sort ==> 改变了原数组,返回改变后的数组(即原数组 === ) sort()可以对当前Array进行排序,它会直接修改当前Array的元素位置,直接调用时,按照默认顺序排序:
concatArr.sort(); // [1, 2, 3, "A", "B", "C", "a", "b", "c"]
排序规则:
- 字符串根据ASCII码进行排序,而小写字母a的ASCII码在大写字母之后。
- 把所有元素先转换为String再排序。
g. reverse ==> 改变了原数组,返回改变后的数组(即原数组 === )
concatArr.reverse(); // ["C", "B", "A", "c", "b", "a", 3, 2, 1]
h. join ==> 将数组转换为字符串,忘了可以去看: 关于String的属性和方法
i. splice
修改Array的“万能方法”,它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素。
第一个参数:索引开始
第二个参数:表示长度
==> 从指定的索引开始删除若干元素
剩余的参数表示从索引开始的地方插入剩余的参数作为新的值
总结:
1、操作(改变)原数组,返回删除的元素组成的数组
==> 为数不多的操作原对象的方法
2、 只有一个参数时,默认都数组的最后
==> 清空某一个数组的方法:
a). arr.length = 0;
b). arr.splice(0);(同时也复制了一个数组)
3、参数少于或等于2个的时候表示只删除,不添加。
4、参数多2个且第二个参数为0的时候表示只添加,不删除。
5、参数多2个且第二个参数不为0的时候表示既删除又添加,可以用来批量替换数组的元素值。
二、特别注意,改变原数组的方法有:
splice、sort、reverse、 push和pop、unshift和shift