js基础_45、数组的方法
slice()
—-可以通过索引来从数组中提取指定元素
—-该方法不会改变元素数组,而是将截取到的元素封装到一个新的数组中返回。
—参数
1(必须):截取开始的位置的索引,包含开始索引。
2(可选):截取结束的位置的索引,不包含结束索引。不写该参数则会截取从开始到最后的所有元素。
索引可以传一个负值,如果传递一个负值,则从后往前计算。
比如-1:倒数第一个,-2倒数第二个;
var arr=['张三','李四','王五','赵六','小明'];
var newarr=arr.slice(2,3);
console.log(newarr);
输出结果如下:
splice()
—-可以用于删除数组中的指定元素
—-使用splice()会影响到原数组,会将指定元素从原数组中删除,并将被删除的元素作为返回值返回。
—-参数:
第一个:表示开始位置的索引。
第二个:表示删除的数量。
第三个及以后:可以传递一些新的元素,这些元素将会依次自动插入到开始位置索引前边。
使用案例:
var arr=['张三','李四','王五','赵六','小明'];
console.log(arr);
var newarr=arr.splice(2,2,'牛魔王','铁扇公主');
console.log(newarr);
console.log(arr);
输出结果如下图:
如果一个都不删,这个方法相当于在指定位置插入元素。
var arr=['张三','李四','王五','赵六','小明'];
console.log(arr);
var newarr=arr.splice(2,0,'牛魔王','铁扇公主');
console.log(newarr);
console.log(arr);
输出结果如下图:
concat()
可以连接两个或多个数组,并将新的数组放回,该方法不会对原数组产生影响。
参数为要连接的数组,也可以是实参。
比如:
var arr=['孙悟空','白龙马','唐三藏'];
var arr2=['蜘蛛精','白骨精','蛇精'];
var arr3=['二郎神','哪吒','托塔天王'];
var newarr=arr.concat(arr2,'小张',arr3);
console.log(newarr);
其输出结果如下图:
join()
—-该方法可以将数组转换为一个字符串
—-该方法不会对原数组产生影响
—-在join()中可以指定一个字符串作为参数,这个字符串将会作为数组中元素之间的连接符。如果不指定连接符,则默认使用,(逗号)作为连接符。
比如:
var arr=['孙悟空','白龙马','唐三藏'];
arr=arr.join();
console.log(arr);
输出结果如下图:
reverse()
—-该方法用来反转数组,该方法会改变原数组。
比如:
var arr=['孙悟空','白龙马','唐三藏'];
arr=arr.reverse();
console.log(arr);
sort()
—-可以用来对数组中的元素进行排序,会影响原数组,默认会按照Unicode编码进行排序,即使对于纯数字的数组,使用sort()排序,也会按照unicode编码排序,所以对数字进行排序时,可能会得到错误的结果。
比如:
var arr=[11,5,3,4,2,1];
arr=arr.sort();
console.log(arr);
输出结果如下图:
如果想使用sort()方法进行正确排序,我们可以自己来指定排序的规则:
—-我们可以在sort()括号里添加一个回调函数,来指定排序规则:
回调函数中需要定义两个形参,浏览器将会分别使用数组中的元素作为实参去调回调函数,使用哪个元素调不确定,但是肯定的是在数组中a一定在b前边。
—-浏览器会根据回调函数的返回值来决定元素的顺序,
如果返回值大于0,则元素会交换位置。
如果返回一个小于的值,则元素位置不变,
如果返回一个0,则认为两个元素相等,也不交换位置。
—如果需要升序排列,则返回a-b,降序则返回b-a
比如:
var arr=[11,5,3,4,2,1];
arr=arr.sort(function(a,b){
return b-a;//降序
});
console.log(arr);
输出结果为按照降序排序,如图