0
点赞
收藏
分享

微信扫一扫

重温javascript --(四)数组以及方法案例介绍

数组

一.定义

1. var arr = [];
2. var arr = new Array();

二、方法

1. 改变原数组

  1. push() 数组末尾添加
// 手写push()方法
var arr = ['a', 'b'];
Array.prototype.push = function(){
  for(var i = 0; i< arguments.length; i++){
      this[this.length] = arguments[i]
  }
  return this.length;
}
  1. pop() 删除
  2. unshift() 数组从 0 位开始添加
  3. shift() 从 0 位开始删除
  4. reverse() 数组翻转
  5. splice() 切片 splice(第几位开始[, 截取长度[, 替换的值]])
  var arr = [1,2,3,4,5];
  arr.splice(2,-1,'aa','bb', 'cc') // [1, 2, 'aa', 'bb', 'cc', 3, 4, 5]
  1. sort() 排序
  // sort 内部可以function自定义排序规则
  // 1. 返回正数,后面的数靠前
  // 2. 返回负数, 前面的数靠前
  // 3. 返回0, 不变
  var arr = [1,3,2,6,4];
  arr.sort(function(a,b){
    return a - b; // 正序
    return b - a; // 倒序
      //  if(a<b){
      //    return 1;
      //  }else{
      //    return -1;
      //  }
  })

练习

// 数组打乱乱序
var arr = [1, 2, 3, 4, 5, 6, 7, 8];
Array.prototype.so = function () {
  this.sort(function (a, b) {
    return Math.random() - 0.5
  })
  return this;
}
arr.so()

2. 不改变原数组

  1. concat() 连接数组
var arr = [1,2,3];
var arr1 = [4,5,6];
arr.concat(arr1)
  1. slice() 截取数组 slice(截取的起始位置[,截取到第几位])
var arr = [1,2,3,4,5,6]
arr.slice(2,3)
  1. join() 数组转字符串
  2. split() 字符串转数组
  3. toString
var arr = [1,2,3,4]
arr.toString();

三、类数组

  1. 拥有 length 属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理);
  2. 不具有数组所具有的方法
  var obj = {
    '1': 'a',
    '2': 'b',
    'length': 2,
    'push': Array.prototype.push,
    'splice': Array.prototype.splice // 加上splice返回数组格式
  }
  Array.prototype.push = function(){
    for(var i = 0; i < arguments.length; i++){
      obj[obj.length] = arguments[i]
    }
    return obj.length
  }

四、数组去重

// 数组去重 无法区分字符串和number

var arr = [1, 2, '2', 3, 4, 5, 5, 4];
// hash 方法
Array.prototype.unique = function () {
  var obj = {},
    arr = [];
  for (var i = 0; i < this.length; i++) {
    if (!obj[this[i]]) {
      obj[this[i]] = this[i];
      arr.push(this[i]);
    }
  }
  return arr;
}

arr.unique()

举报

相关推荐

0 条评论