JS数组基础方法及数组去重

一、数组方法
---在数组头部添加元素
array.unshift()

---删除数组头部元素
array.shift()

---在数组尾部添加元素
array.push()

---删除数组最后一个元素
array.pop()

---元素反转
array.reverse()

---数组转字符串
array.toString()
array.join(',')

---根据下标删除元素
delete array[0]

---splice() 方法可用于在指定下标处添加元素 或者 从指定下标处删除元素
## 用于添加元素
array.splice(2, 0, "Lemon", "Kiwi");
# 第一个参数(2)定义了应添加新元素的位置(拼接)。
# 第二个参数(0)定义应删除多少元素。
# 其余参数(“Lemon”,“Kiwi”)定义要添加的新元素。
# splice() 方法返回一个包含已删除项的数组:

## 删除元素
fruits.splice(0, 1); 
# 第一个参数(0)定义新元素应该被添加(接入)的位置。
# 第二个参数(1)定义应该删除多个元素。

---数组合并 concat()
array1.concat(array2)

---裁剪数组 slice()
array.slice(1)
# 从数组下标1开始切出一段数组

## 也可以接收两个参数
array.slice(1, 3)
从下标1开始裁减到下标3(不包括)的数组

--- indexOf
array.indeOf('0')
查找当前元素所在数组中的下标,如果存在返回对应下标 
如果不存在,返回 -1

二、数组去重
const arr = [1, 1, '1', 17, true, true, false, false, 'true', 'a', {}, {}];

方法一、  利用set
function unique(array) {
    return Array.from(new Set(arr))
}

const array1 = [...new Set(arr)]

方法二、 双层for循环 + splice
const unique1 = arr => {
    let len = arr.length;
    for(let i = 0;i<len;i++){
        for(let j = i+1;j<len;j++){
            if(arr[i] === arr[j]) {
                arr.splice(j,1);
// 每删除一个树,j--保证j的值经过自加后不变。同时,len--,减少循环次数提升性能
                len--;
                j--;
            }
        }
    }
    return arr;
}

方法三、利用indexOf
const unique2 = arr => {
    let len = arr.length;
    const str = []
    for(let i = 0;i<len;i++){
        if(str.indexOf(arr[i]) === -1) 
        return str.push(arr[i])
    }
}

方法四、利用include
const unqiue3 = arr => {
    let len = arr.length
    const str = []
    for(let i = 0;i<len;i++){
        if(!str.include(arr[i]))
        return str.push(arr[i])
    }
}

方法5、利用filter
const unique4 = arr => {  
    return arr.filter((item, index) => {    
    return arr.indexOf(item) === index;  
    });
}

---arr.indexOf(item) // 找到该元素在数组中的下标
---filter不会改变原数组、不会对空数组检查
array.filter(function(currentValue,index,arr)
currentValue: 必须,当前元素的值
index:可选,当前元素的索引值
arr:可选,当前元素属于的数组对象

方法6、利用map
const unique5 = arr => {
    const map = new Map()
    const str = []
    const len = arr.length
    for(let i = 0;i<len;i++){
        if (!map.has(arr[i])) {      
        map.set(arr[i], true)      
        res.push(arr[i]);    
        }    
    }
    return res;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值