1.push()
//push()函数
//特性:往数组尾部添加元素,可添加多个
//返回数组长度
//尝试写函数覆盖
var arr = [];
Array.prototype.push = function () {
for (var i = 0; i < arguments.length; i++) {
this[this.length] = arguments[i]; }
return this.length; }
2. pop ( )
把数组的最后一位剪切出去
(执行不用传参)
3.unshift ( )
在数组前面增加元素、shift()是删除
4.reverse ( )
逆转数组,返回原数组
5.splice( )
// splice ---- 切片
arr.splice ( 从第几位开始,截取多少的长度,再切口处添加新的数据 )
ps:返回截取的部分
var arr = [1,2,3,5];
arr.splice(3,0,4); // arr = [1,2,3,4,5]
如果是负数位,就是从尾部开始截取
因为是负数的时候系统做了兼容
splice = function(pos){
pos += pos > 0 ? 0 : this.length; // pos = pos + (pos > 0 ? 0 : this.length);
}
// 输入的是-1 其实就相当于 -1 + 4 = 3.
6. sort( ) ※
数组排序
var arr = [-1,5,7,3,9];
arr.sort(); // arr = [-1,3,5,7,9]
升序排列后返回
降序的话可以 arr.sort().reverse()
var arr1 = [-1,5,-9,7,8,56,4];
arr1.sort();
console.log(arr1); //[-1, -9, 4, 5, 56, 7, 8]
说明他是按照 ASCII 码排序的
所以他给我们留了个编程接口,我们可以自己往里面写一个匿名function
这下就坏起来了,他就可以让这个方法按照我们想要的的任何方法排序
规则:
- 必须写两个形参
- 看返回值
- 当返回值为负数时,前面的数放在前面
- 当返回值为正数时,后面的数放在前面
- 为0,不动
所以升序的方法就是
var arr = [20, 9, 4, 19, 5];
arr.sort(function (a, b) {
if (a > b) {
return 1;
} else {
return -1;}})
简单一点就是
arr.sort(function (a, b) {
return a - b;
})
arr.sort((a,b) => a-b)
所以降序就是
arr.sort(function (a, b) {
return b - a;
})
arr.sort((a,b) => b-a)
他比较的方法就是冒泡, 他这个函数会执行有限次
第一次比较20和9这两个位置, 第二次20跟4...balabalabala
那既然可以从无到有,那就能从有到无 : )
有序 ————> 无序
var arr = [1,2,3,4,5,6,7,8];
arr.sort(function(){
return Math.random() - 0.5;
})
数组只不过是特殊的对象,那按照对象之中的属性也能排
var BWM ={price:2000000}
var Porsche= {price:100000}
var Mercedes = {price: 12345678}
var arr = [BWM,Porsche,Mercedes];
arr.sort(function(a,b){
return a.age-b.age;
})
升序排列
结合一哈以前学的,按字节长度排
先写一个返回字节长度的方法 retBytes()
function retBytes(str) {
var num = str.length;
for (var i = 0; i < str.length; i++) {
if (str.charCodeAt(i) > 255) {
num++;
}
}
return num;
}
然后依然是经典升序
var arr = ['a田', 'ab日', 'abc曰', 'gsdfdasf', 'vvv甲'];
arr.sort(function (a, b) {
return retBytes(a) - retBytes(b);
});
只有以上七个方法能改变原数组
push 、pop 、shift 、unshift 、sort、reverse、splice
然后就是不改变原数组的了
1. concat
var arr = [1,2,3];
var arr1 = [4,5,6];
var arr2 = arr.concat(arr1);
//[1,2,3,4,5,6]
2.toString
把数组整成字符串
[1,2,3,4,5,6] -->"1,2,3,4,5,6"
3.slice
也是截取
俩参数
slice (从该位开始截取,截取到该位 )
一个参数
slice( 从该位截到最后 )
不写参数 整个截取(类数组转化为数组用)
4.join
按照你穿的参数把数组转化为字符串然后连起来
arr.join("-"); //"1-2-3-4-5-6"
记得里面最好要是字符串
不传参数就是按逗号连,如果join("");就能实现拼接
这里面就有一个互逆的 split,拆分用的
arr.split("-"); //"1","2","3","4","5","6"
(¦3[▓▓] 晚安