数组的一些问题

数组去重
  1. es6的Set:
function norepeat (arr) {
    let a = new Set(arr)
    return [...a]
}
  1. 2.
indexOf() === -1 ,不存在
//建立新数组,判断当前循环的值在新数组中是否存在,不存在就push
function doit (arr) {
  var temp = []
  for (let i = 0; i < arr.length; i++) {
    if (temp.indexOf(arr[i]) === -1) {
      temp.push(arr[i])
    }    
  }
  return temp
}
function doit (arr) {
  var temp = []
  for (let i = 0; i < arr.length; i++) {
    if (arr.indexOf(arr[i]) === i) {
      temp.push(arr[i])
    }    
  }
  return temp
}
数组乱序的方法

1.时间复杂度约为 O(n2),splice()方法会遍历一次

function shuffle(a) {
    var b = [];
    while (a.length > 0) {
        var index = parseInt(Math.random() * (a.length - 1));
        b.push(a[index]);
        a.splice(index, 1);
    }
    return b;
}

2.时间复杂度为 O(n)

function shuffle(a) {
    var len = a.length;
    for (var i = 0; i < len - 1; i++) {
        var index = parseInt(Math.random() * (len - i));
        var temp = a[index];
        a[index] = a[len - i - 1];
        a[len - i - 1] = temp;
    }
}
splice(index,num,item1,item2,item3)
  1. 从下标为index的开始删除num个,再从index的位置插入item1,item2….
var a = [1,2,3,4,5,3]
let b = a.splice(1,2,6,0,3)
// b => [2,3] ,返回删除元素
// a => [1,6,0,3,4,5,3]
类数组

定义:拥有length属性,其他属性(索引)为非负整数,不具有数组的方法
javascript中常见的类数组有arguments对象和DOM方法的返回结果。
比如 document.getElementsByTagName()

// 类数组示例
var a = {'1':'gg','2':'love','4':'meimei',length:5};
Array.prototype.join.call(a,'+'); //'+gg+love++meimei'
// 非类数组
var c = {'1':2};
除了for循环还可以用什么方式循环

1、do/while
2、map

for in 和for of

( var a in obj )===a是key
( var a of obj )===a是value

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值