数组原型上方法

数组常用方法

1. 改变原数组
  • push(尾部添加)、pop(尾部移除)、unshift(首部增加)、shift(首部移除), sort(ascii排序),reverse(数据逆转)
  • splice
2. 不改变原数组
  • concat(连接2个数组),slice, join -> split, toString, slice

数组push:

var arr = []
Array.prototype.push = function() { // 模拟系统的push实现
  //this :当前实例
  for(var i = 0; i < arguments.length; i++) {
    this[this.length] = arguments[i]
  }
  return this.length;
}
arr.push(1,2,3)

数组unshift:

var arr = []
Array.prototype.unshift= function() { // 模拟系统的unshift实现
  //this :当前实例
  var ary = [...arguments, ...this];
  this.length = ary.length;
  for(var i=0;i<ary.length;i++){
    this[i]=ary[i];
   }
  return ary.length;
}
arr.unshift(1,2,3)

数组pop:

var arr = [2,3,4,5]
Array.prototype.pop= function() { // 模拟系统的pop实现
  //this :当前实例
  var num=this[this.length-1];
  this.length--;
  return num;
}
arr.pop()

数组shift:

var arr = [2,3,4,5]
Array.prototype.shift= function() { // 模拟系统的shift实现
  //this :当前实例
  var num=this[0];
  for(var i=1;i<this.length;i++){
      this[i-1]=this[i];
  }
  this.length--;
  return num;
}
arr.shift()

数组splice用法:

var arr = [1,2,3,4,56,7]
// arr.splice(从第几位开始, 截取多少长度,在切口处添加新的数据) 
// 新数据可添加多个;
// splice = function(pos) {// 起始位置可以是负数
//    pos += pos > 0? 0 : this.length; // pos >=0
// }

数组sort用法:
语法:arrayObject.sort(sortby); // 参数sortby 可选,用来规定排序的顺序,但必须是函数

var arr = [1, 3, 5, 10, 7, 9] // 如果用sort排序,则比较的是字符的ascii码
// 自定义排序
// 1. 必须写两个形参
// 2. 看返回值 1) 当返回值为负数时, 那么前面的数放在前面
//            2) 当返回值为正数时,那么后面的数在前
//            3) 当返回值为0,不动
arr.sort(function(a, b) {
  return a - b; // 升序
  // return b-a // 降序
})

例1:给一个有序数组,乱序

var arr =[1,2,3,4,5,6,7,8,9]
arr.sort(function() {
  return Math.random()-0.5;
})

例2:对象属性排序

var a = {
  name: 'aaa',
  age: 11
}
var b = {
  name: 'bbb',
  age: 13
}
var arr = [a, b]
arr.sort(function(a,b) {
  return a.age-b.age;
})

数组concat:// concat不改变原数组

var aa = [1,2,3,4], bb= [5,6,7,8]
aa.concat(bb)

数组slice用法:

var arr = [1,2,3,4,5,6,7]
// slice (从该位开始截取,截取到该位)
// slice (从该位开始截取) // 截取到最后一位
// slice () // 全部截取 如:把类数组转化为数组
var newArr = arr.slice(1, 3)

数组join <==> 字符串的 str.split (互逆)

使用案例:

如何在Array原型上扩展一个去重方法?

利用对象属性不重复

Array.prototype.unique = function() {
  var temp = {}, arr = [], len = this.length;
  for (var i = 0; i < len; i++) {
    if(!temp[this[i]]) {
      temp[this[i]] = true; // 赋一个真值
      arr.push(this[i]);
    }
  }
  return arr;
}
var d = [1,2,1,1,1,2,3,4,5,6,6,5,4,8];
d.unique(); // 打印结果: [1, 2, 3, 4, 5, 6, 8]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容