美文网首页
数组原型上方法

数组原型上方法

作者: 一米阳光kk | 来源:发表于2019-04-09 22:39 被阅读0次

数组常用方法

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]

相关文章

  • 数组方法

    数组的方法有数组原型方法,也有从object对象继承来的方法,这里我们只介绍数组的原型方法,数组原型方法主要有以下...

  • ES6-Array .from() and .of()

    1.from()不是数组原型上的方法 2..of()创建数组

  • js数组常用方法

    数组常用的方法是指:继承了数组原型(Array.prototype)上的方法 一、push、unshift 增加数...

  • 类数组转化为数组

    模拟内置slice实现数组克隆 优化类数组转数组的代码:借用数组原型上的slice方法,将arguments转化为...

  • 类数组转化为数组

    类数组是具有length属性,但不具有数组原型上的方法。常见的类数组有arguments、DOM操作方法返回的结果...

  • JavaScript 数组 函数

    1、标准库函数: 2、Array数组: 1、创建数组方法: 2、数组本质: 原型链上必须有Array.protot...

  • js数组的方法

    数组方法 下面开始介绍数组的方法,数组的方法有数组原型方法,也有从object对象继承来的方法,这里我们只介绍数组...

  • JS数组常用方法大全

    数组的方法有数组原型方法,也有从object对象继承来的方法,下面就介绍一下数组常用方法:join() --...

  • JavaScript数组的原型方法

    上章节讲完JS数组的私有方法,这个章节我们继续讲解数组的原型方法。 Array的原型属性 一、Array.conc...

  • js中关于真伪数组转换的问题

    在js中碰到关于真伪数组转换的问题,我们经常使用数组原型对象上push方法,再用call或者apply方法来修改t...

网友评论

      本文标题:数组原型上方法

      本文链接:https://www.haomeiwen.com/subject/cojwiqtx.html