concat
<script>
var arr = ["孙悟空","猪八戒","沙和尚"];
var arr2 = ["白骨精","玉兔精","蜘蛛精"];
var arr3 = ["二郎神","太上老君","玉皇大帝"];
var result = arr.concat(arr2,arr3,"牛魔王","铁扇公主");
console.log(arr);
console.log(result);
</script>
不会对原数组产生影响。
join
<script>
var arr = ["孙悟空","猪八戒","沙和尚"];
var result = arr.join();
console.log(arr);
console.log(result);
</script>
同样,不会影响原数组。
可以指定分隔符。
<script>
var arr = ["孙悟空","猪八戒","沙和尚"];
var result = arr.join("*");
console.log(arr);
console.log(result);
</script>
如果不想要连接符,可以写空块。
var result = arr.join("");
reverse
<script>
var arr = ["孙悟空","猪八戒","沙和尚"];
var result = arr.reverse();
console.log(arr);
console.log(result);
</script>
很显然,这个是会影响原数组的。
sort
var arr = ['a','d','c','b'];
var result = arr.sort();
console.log(arr);
console.log(result);
这个是按unicode排序的。
如果我们给数字排序的话,考虑到unicode排序,会有如下结果
var arr = [1,2,5,3,22,11];
var result = arr.sort();
console.log(arr);
这不是我们想要的,要如何解决呢?
可以给sort()添加一个回调函数,来指定排序规则。
回调函数中需要定义两个形参,
浏览器将会分别使用数组中的元素作为实参去调用回调函数
使用哪个元素调用不确定,但是肯定的是在数组中a一定在b前边
浏览器会根据回调函数的返回值来决定元素的顺序,
如果返回一个大于0的值,则元素会交换位置
如果返回一个小于0的值,则元素位置不变
如果返回一个0,则认为两个元素相等,也不交换位置
arr.sort(function(a,b){
return 1;
});
注意:我测试了发现a和b是反过来,即a是在b的后面,并且返回一个小于0的值才会互换位置。不是很懂,好像是说视频里老师用的HBuilder里的控制台和浏览器的不一样。
<script>
var arr = [1,2,5,3,22,11];
arr.sort(function(a,b){
if(a>b){
return 1;
}
else if(a<b){
return -1;
}
else{
return 0;
}
});
console.log(arr);
</script>
简易版
<script>
var arr = [1,2,5,3,22,11];
arr.sort(function(a,b){
return a-b;
});
console.log(arr);
</script>