Javascript数组方法概述(深入原生数组方法)

1、不改变原数组,返回新数组

  • concat()

    连接两个或多个数组,两边的原始数组都不会变化,返回被连接数组的一个副本。

  • join()

    把数组中所有元素放入一个字符串中,返回字符串。

  • slice()

    从开始到结束(不包括结束)选择数组的一部分浅拷贝到一个新数组。

  • map()

    创建一个新数组并返回,其中新数组的每个元素由调用原始数组中的每一个元素执行提供的函数得来,原始数组不会改变。

  • every()

    对数组中的每个元素都执行一次指定的回调函数,直到回调函数返回false,此时every()返回false并不再继续执行。如果回调函数对每个元素都返回true,那么every()将返回true

  • some()

    对数组中的每个元素都执行一次指定的回调函数,直到回调函数返回true,此时some()返回true并不再继续执行。如果回调函数对每个元素都返回false,那么some()将返回false

  • filter()

    创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。

2、改变原数组

  • forEach()

    针对每一个元素执行提供的函数。会修改原来的数组,不会返回执行结果,返回undefined

  • pop()

    删除数组最后一个元素,返回被删除的元素。如果数组为空,则不改变数组,返回undefined

  • push()

    向数组末尾添加一个或多个元素,返回改变后数组的长度。

  • reverse()

    颠倒数组中元素的位置,返回该数组的引用。

  • shift()

    从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。

  • unshift()

    将一个或多个元素添加到数组的开头,并返回新数组的长度。

  • sort()

    对数组的元素进行排序,并返回数组。排序不一定是稳定的。默认排序顺序是根据字符串Unicode码点。

  • splice()

    向数组中添加/删除项目,然后返回被删除项目的新数组。遍历方法

遍历方法

获取属性名:for..in 和 object.keys()的区别

  • for..in语句:遍历对象的可枚举属性名列表,包括[[Prototype]]原型链。
    • 对于数组,不仅会包含所有数值索引,还会包含所有可枚举属性。遍历数组使用传统for循环
  • propertyIsEnumerable(..):只检查属性名是否在对象中并且enumerable:true
  • Object.keys(..):只查找属性名是否在对象中,返回一个数组,包含所有可枚举属性名
  • Object.getOwnPropertyNames(..):只查找属性名是否在对象中,返回一个数组,包含所有属性名,无论是否可枚举。

获取属性值:for..ofobject.values()

  • for..of语句:遍历可迭代对象的可枚举属性的值列表,包括[[Prototype]]原型链。
  • object.values():返回一个给定对象自身的所有可枚举属性的值的数组,不包括原型链 

ES6语法之Map键值对转化数组

new Map创建一个map

// new Map创建一个map
let map = new Map([[1,"one"], [2,"two"], [3,"three"]]);
map.set(4, "four");

// 获取所有键值对
console.log("获取key")
console.log([...map.keys()]) // 输出[1, 2, 3, 4]

console.log("获取value")
console.log([...map.values()]) // 输出[one, two, three, four]

console.log("获取map数组")
console.log([...map]) // 输出[[1, "one"], [2, "two"], [3, "three"], [4, "four"]]

数组去重

  • reduce方法
const distinct = arr => arr.sort().reduce( (init, current) => {
    
    if (init.length === 0 || init[init.length - 1] !== current) {
        init.push( current );
    }
    return init;
}, []);

let arr = [1,2,1,2,3,5,4,5,3,4,4,4,4];
distinct(arr); // [1, 2, 3, 4, 5]

  • filter方法
const distinct = arr => arr.filter( (element, index, self) => {
    return self.indexOf( element ) === index;
});

let arr = [1,2,1,2,3,5,4,5,3,4,4,4,4];
distinct(arr); // [1, 2, 3, 5, 4]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值