2024 JavaScript 数组(Array)方法1w,2024最新大厂高频微服务面试总结

Array.of 方式

Array.from 方式

数组方法

返回新数组

concat()

join()

slice()

map()

filter()

toLocaleString()

toString()

flat()

flatMap()

entries()

keys()

values()

改变原数组

push()

pop()

unshift()

shift()

sort()

reverse()

splice()

fill()

copyWithin()

更多方法

indexOf()

lastIndexOf()

forEach()

every()

some()

reduce()

reduceRight()

includes()

find()

findIndex()

isArray()

即将发布的数组新特性

方法尝鲜

at()

Array Group

Array find from last


前言

==

数组是 js 中最常用到的数据集合,其内置的方法有很多,熟练掌握这些方法,可以有效的提高我们的工作效率,同时对我们的代码质量也是有很大影响。

创建数组

====

字面量方式


let arr1 = []; // 创建一个空数组

let arr2 = [“leo”]; // 创建一个包含1个字符串的数组

let arr3 = [“leo”,“is”,18]; // 创建一个包含3项数据的数组

构造函数方式


let arr1 = new Array(); // 创建一个空数组

let arr2 = new Array(“leo”); // 创建一个包含1个字符串的数组

let arr3 = new Array(“leo”,“is”,“nice”); // 创建一个包含3个字符串的数组

Array.of 方式


Array.of()方法总会创建一个包含所有传入参数的数组,而不管参数的数量与类型

let arr = Array.of(1,2);

console.log(arr.length); // 2

console.log(arr[0]); // 1

let arr1 = Array.of(“leo”);

console.log(arr1.length); // 1

console.log(arr1[0]); // “leo”

Array.from 方式


Array.from() 将可迭代对象或者类数组对象作为第一个参数传入,就能返回一个数组

function fn(…args) { // …args剩余参数数组,由传递给函数的实际参数提供

let newArr = Array.from(args);

console.log(newArr);

}

fn(“leo”,“is”,18); // [“leo”,“is”,18]

扩展:映射转换

如果你想实行进一步的数组转换,你可以向 Array.from()方法传递一个映射用的函数作为第二个参数。此函数会将数组对象的每一个值转换为目标形式,并将其存储在目标数组的对应位置上

function fn(…args) {

let newArr = Array.from(args, value => value + 6);

console.log(newArr);

}

fn(“leo”,“is”,“great”); // [“leo6”,“is6”,“great6”]

数组方法

====

返回新数组


concat()

连接两个或更多的数组,并返回结果

let arr = [1,2,3,4];

let newArr = arr.concat([5,6],7);

console.log(newArr); // [1,2,3,4,5,6,7]

console.log(arr); // [1,2,3,4] 原数组不变

join()

把数组的所有元素放入一个字符串。

元素是通过指定的分隔符进行分隔的,默认使用逗号作为分隔符

let arr = [1,2,3];

console.log(arr.join()); // “1,2,3”

console.log(arr.join(“-”)); // “1-2-3”

console.log(arr); // [1, 2, 3] 原数组不变

slice()

选取数组的一部分,并返回一个新数组。

slice() 接受一个或两个参数,在只有一个参数的情况下, 其返回从该参数指定位置开始到当前数组末尾的所有项;如果有两个参数,该方法返回起始和结束位置之间的项,但不包括结束位置的项,当出现负数时,将负数加上数组长度的值来替换该位置的数

let arr = [1,3,5,7,9,11]; // length:6

let newArr1 = arr.slice(1); // 从index为1开始向后截取

console.log(newArr1); // [3, 5, 7, 9, 11]

let newArr2 = arr.slice(1,4); // 从index为1开始向后截取,到index为4停止,不包括4

console.log(newArr2); // [3, 5, 7]

let newArr3 = arr.slice(1,-2); // -2 + 6 = 4,相当于arr.slice(1,4)

console.log(newArr3); // [3, 5, 7]

let newArr4 = arr.slice(-4,-1); // 相当于arr.slice(2,5)

console.log(newArr4); // [5, 7, 9]

console.log(arr); //[1, 3, 5, 7, 9, 11] 原数组没变

map()

通过指定函数处理数组的每个元素,并返回处理后的数组

let arr = [1, 2, 3, 4, 5];

let newArr = arr.map(function(item){

return item * item;

});

console.log(newArr); // [1, 4, 9, 16, 25]

console.log(arr); // [1, 2, 3, 4, 5] 原数组不变

filter()

检测数值元素,并返回符合条件所有元素的数组,实现“过滤”功能

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

let newArr = arr.filter(function(item, index) {

return index % 3 === 0 || item >= 8;

});

console.log(newArr); // [1, 4, 7, 8, 9, 10]

console.log(arr); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 原数组不变

toLocaleString()

toString()

以上两个都是将数组转换成字符串,并返回结果

let arr = [1,2,3,4,5];

let str1 = arr.toLocaleString();

let str2 = arr.toString();

console.log(str1); // “1,2,3,4,5”

console.log(str2); // “1,2,3,4,5”

console.log(arr); // [1,2,3,4,5] 原数组不变

flat()

按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回,实现数组扁平化。

参数:指定要提取嵌套数组的结构深度,默认值为 1

let arr = [0, 1, 2, [3, 4]];

console.log(arr.flat()); // [0, 1, 2, 3, 4]

let arr1 = [0, 1, 2, [[[3, 4]]]];

console.log(arr1.flat(2)); // [0, 1, 2, [3, 4]]

//使用 Infinity,可展开任意深度的嵌套数组

let arr2 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];

console.log(arr2.flat(Infinity)); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

// 扁平化数组空项,如果原数组有空位,flat()方法清除空位

let arr3 = [1, 2, , , 4, 5];

console.log(arr3.flat()); // [1, 2, 4, 5]

flatMap()

会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。

参数:指定要提取嵌套数组的结构深度,默认值为 1

// 相当于 [[2, 4], [3, 6], [4, 8]].flat()

[2, 3, 4].flatMap((x) => [x, x * 2]); // [2, 4, 3, 6, 4, 8]

entries()

keys()

values()

entries()、keys()、values() 都是用于遍历数组,它们都返回一个遍历器对象,可以用for…of循环进行遍历

区别是keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历

for (let index of [‘a’, ‘b’].keys()) { // [0,1]

console.log(index);

}

// 0

// 1

for (let item of [‘a’, ‘b’].values()) { // [‘a’,‘b’]

console.log(item);

}

// ‘a’

// ‘b’

for (let [index, item] of [‘a’, ‘b’].entries()) { // [[0,‘a’],[1,‘b’]]

console.log(index, item);

}

// 0 ‘a’

// 1 ‘b’

改变原数组


push()

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

let arr = [“leo”,“is”,“great”];

let len = arr.push(“true”);

console.log(arr); // [“leo”,“is”,“great”,“true”] 原数组改变

console.log(len); // 4

pop()

删除数组的最后一个元素,返回删除的元素,原数组改变

// arr:[“leo”,“is”,“great”,“true”]

let item = arr.pop();

console.log(item); // “true”

console.log(arr); // [“leo”,“is”,“great”] 原数组改变

unshift()

向数组的开头添加一个或更多元素,返回新的长度,原数组改变

let arr = [“leo”,“is”,“great”];

let len = arr.unshift(“look”);

console.log(arr); // [“look”,“leo”,“is”,“great”] 原数组改变

console.log(len); // 4

shift()

删除并返回数组的第一个元素,原数组改变

// arr:[“look”,“leo”,“is”,“great”]

let item = arr.shift();

console.log(item); // “look”

console.log(arr); // [“leo”,“is”,“great”] 原数组改变

sort()

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

JavaScript 和 ES6

在这个过程你会发现,有很多 JS 知识点你并不能更好的理解为什么这么设计,以及这样设计的好处是什么,这就逼着让你去学习这单个知识点的来龙去脉,去哪学?第一,书籍,我知道你不喜欢看,我最近通过刷大厂面试题整理了一份前端核心知识笔记,比较书籍更精简,一句废话都没有,这份笔记也让我通过跳槽从8k涨成20k。

JavaScript部分截图

mg-0TX6u1Sc-1711610445991)]
[外链图片转存中…(img-kSnlgdBR-1711610445992)]
[外链图片转存中…(img-VGIo5MTw-1711610445993)]
[外链图片转存中…(img-Kia6AiSf-1711610445993)]
[外链图片转存中…(img-5vKSbkp6-1711610445994)]
[外链图片转存中…(img-sQfljnT5-1711610445994)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-RBgchl7k-1711610445995)]

JavaScript 和 ES6

在这个过程你会发现,有很多 JS 知识点你并不能更好的理解为什么这么设计,以及这样设计的好处是什么,这就逼着让你去学习这单个知识点的来龙去脉,去哪学?第一,书籍,我知道你不喜欢看,我最近通过刷大厂面试题整理了一份前端核心知识笔记,比较书籍更精简,一句废话都没有,这份笔记也让我通过跳槽从8k涨成20k。

JavaScript部分截图

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值