在数组最后一位添加
//代码实现 var arr = [1,2,3]; Array.prototype.push = function() { for(var i = 0; j < arguments.length; i++) { this[this.length] = arguments[i]; } return this.length; }弹出数组最后一位,参数只能为空或1,因为其他的参数不会识别
在数组前面添加,且返回数组长度
反转数组
对数组排序,但是对比的是ASCII,因此系统留了接口,改变排序规则
var arr = [1, 3, 5, 4, 10]; //控制台输入 arr.sort //返回 1,10,3,4,5系统留的接口,有两个规则 (1)必须写两个形参 (2)看返回值 a.当返回值为负数时,那么前面的数放在前面 b.正数,后面的数在前 c.0,不改变
sort升序排 arr.sort(function(a, b) { return a - b; }); sort降序排 arr.sort(function(a, b) { return b - a; }); sort任意乱序排 arr.sort(function(a, b) { return Math.random() - 0.5; }); 对象内属性排序 var person1 = { name : 'a', age : 10 } var person2 = { name : 'a', age : 13 } var person3 = { name : 'a', age : 4 } var arr = [person1, person2, person3]; arr.sort(function (a, b) { if(a.age > b.age) { return 1; } else { return -1; } });拼接两个数组,且不改变原数组
不改变原数组,所以要新建数组接收返回值 第一个参数,可以为负数,代表倒数,比如-1代表倒数第一位
var arr = [1,2,3,4,5]; var newArr = arr.slice(1, 3); // newArr // 2,3注意:参数要加引号 返回值是字符
var arr = [1,2,3,4,5]; // arr.join('-') // 1-2-3-4-5没有参数的话以逗号连接
split是字符串的方法,返回值是数组
var str = 'alibaba'; var str1 = 'baidu'; var str2 = 'tencent';长得像数组也能像数组一样用,但不是数组
可以利用属性名模拟数组的特性可以动态的增长length属性如果强行让类数组调用push方法,则会根据length属性值的位置进行属性的扩充形式如下:
var obj = { //属性要为索引(数字)属性,必须有length,最好有push "0" : 'a'; "1" : 'b'; "2" : 'c'; "length" : 3, "push" : Array.prototype.push }增加splice方法后,类数组可以跟数组长得很像
var obj = { //属性要为索引(数字)属性,必须有length,最好有push "0" : 'a'; "1" : 'b'; "2" : 'c'; "length" : 3, "push" : Array.prototype.push, "splice" : Array.prototype.splice }具体区别自己输入到控制台看看
push方法的系统实现:
Array.prototype.push = function(target) { obj[obj.length] = targe; obj.length ++; }一个例子:
var obj = { "2" : 'a'; "3" : 'b'; "length" : 2, "push" : Array.prototype.push } obj.push('c'); obj.push('d'); // obj变为 { "2" : 'c'; "3" : 'd'; "length" : 4, "push" : Array.prototype.push }类数组优点:可以被作为数组和对象使用,具有强大的存储数据能力。 然而不能所有的数组方法均使用,需要自己用原型 Array.prototype.方法定义 在DOM中生成的对象数组都是类数组。
