前端面试题-js部分-数组去重-数组扁平化-伪数组转数组-面向对象的继承方式(ES5)

前端面试题-js部分-数组去重-数组扁平化-伪数组转数组-面向对象的继承方式ES5

  • 数组去重
  • 数组扁平化
  • 伪数组转换为数组
  • 面向对象的继承方式(ES5)

数组去重

1.利用es6 set 去重 Set 类型不允许有值重复

  		let arr1 = [1, 2, 4, 3, 5, 7, 1, 8, 2, 4, 9]console.log('数组去重前:', arr1)let s1 = new Set(arr1)let arr2=Array.from(s1)//转换为数组console.log('数组去重后:', arr2)

在这里插入图片描述
2.利用for循环嵌套for循环 然后splice去重 原地修改数组

 		let arr1 = [1, 2, 4, 3, 5, 7, 1, 8, 2, 4, 9]console.log('数组去重前:', arr1)for (let i = 0; i < arr1.length; i++) {for (let j = 0; j < arr1.length; j++) {if (i != j && arr1[i] == arr1[j]) {arr1.splice(j, 1)}}}console.log('数组去重后:', arr1)

在这里插入图片描述
3.利用indexof去重 查找方法 找到返回对应索引 找不到返回-1

 		let arr1 = [1, 2, 4, 3, 5, 7, 1, 8, 2, 4, 9]console.log('数组去重前:', arr1)let temp=[]for (let i = 0; i < arr1.length; i++) {if(temp.indexOf(arr1[i])==-1){temp.push(arr1[i])}}console.log('数组去重后:', temp)

在这里插入图片描述
4. 利用inncludes去重 这个方法是一个查找方法 结果是是否包含 返回true或false

 		let arr1 = [1, 2, 4, 3, 5, 7, 1, 8, 2, 4, 9]console.log('数组去重前:', arr1)let temp=[]for (let i = 0; i < arr1.length; i++) {if(!temp.includes(arr1[i])){temp.push(arr1[i])}}console.log('数组去重后:', temp)

在这里插入图片描述

数组扁平化

1.递归实现数组扁平化 (经典递归)

 let arr=[1,[2,4,5],2,[34,67]]function  flatarr(arr){let res=[]for(let i=0;i<arr.length;i++){if(Array.isArray(arr[i])){res=res.concat(flatarr(arr[i]))}else{res.push(arr[i])}}return res}let arr1= flatarr(arr)console.log('数组拍平前',arr)console.log('数组拍平后',arr1)

在这里插入图片描述
什么是递归
递归就是在运行的过程中调用自己,构成递归需要以下条件。子问题与原始问题为同样的事情且更为简单。不能无限制的调用本身,需要有一个出口,化简为非递归的情况处理。

2.es6 flat 函数 (推荐使用)

 let arr=[1,[2,4,5],2,[34,67]]let arr1= arr.flat()console.log('数组拍平前',arr)console.log('数组拍平后',arr1)

在这里插入图片描述
3.toString加上split实现 其中用到了一个字符串替换的方法 这种拍平和上面两种拍平不太一样 通过图片就能看出来

 let arr=[1,[2,4,5],2,[34,67]]let temp=arr.toString()temp.replaceAll('[','')temp.replaceAll(']','')let arr1=temp.split(',')console.log('数组拍平前',arr)console.log('数组拍平后',arr1)

在这里插入图片描述

伪数组转换为数组

1.Array.prototype.slice.call 函数的参数列表是位数组的一种

		function ttty(){let temp=argumentsconsole.log(arguments)let arr2= Array.prototype.slice.call(temp)console.log(arr2)}ttty(1,2,3,4,5,'hhhh')

在这里插入图片描述
2.[…xxx] 这个例子也是函数的参数

		function ttty(){let temp=argumentsconsole.log(arguments)let arr2= [...temp]console.log(arr2)}ttty(1,2,3,4,5,'hhhh')

在这里插入图片描述
3.Array.form 函数的参数列表这个方法也能转换 例子是set伪数组

		let arr1=[1, 2, 4, 3, 5, 7, 1, 8, 2, 4, 9]let s1=new Set(arr1)let arr2= Array.from(s1)console.log(s1)console.log(arr2)

在这里插入图片描述

面向对象的继承方式(ES5)

1.原型链的方式来实现继承
2.借用构造函数
3.组合继承
4.寄生式继承
5.继承组合式继承

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/655733.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebRTC系列-自定义媒体数据加密

文章目录 1. 对外加密接口2. 对外加密实现前面的文章都有提过WebRTC使用的加密方式是SRTP这个库提供的,这个三方库这里就不做介绍,主要是对rtp包进行加密;自然的其调用也是WebRTC的rtp相关模块;同时在WebRTC里也提供一个自定义加密的接口,本文将围绕这个接口做介绍及分析;…

【郑益慧】模拟电子技术:7.Mos管的工作原理

Mos管的工作原理 Mos管的出现&#xff0c;几乎不怎么耗电。因此在集成电路中起了非常大的作用 在某些方面确实比晶体三极管强。 基本原理&#xff1a;依靠电场效应来控制。 电场效应几乎是没有电流的&#xff0c;没有电流几乎是没有功率的。 从控制上来说&#xff0c;消耗…

华为——NGFW Module安装在集群交换机上,二层双机负载分担部署,交换机重定向引流

NGFW Module安装在集群交换机上&#xff0c;二层双机负载分担部署&#xff0c;交换机重定向引流 业务需求 如图1所示&#xff0c;两台交换机集群组网&#xff0c;两块NGFW Module分别安装在两台交换机的1号槽位组成双机负载分担组网。NGFW Module工作在二层&#xff0c;也就是…

微信小程序canvas画布实现文字自由缩放、移动功能

目录 实现效果 一、获取画布信息并绘制背景 二、绘制文字 三、绘制文字编辑按钮

铺砖4(c++题解)

题目描述 你有一个长为N宽为2的墙壁&#xff0c;给你两种砖头&#xff1a;一个长2宽1&#xff0c;另一个是L型覆盖3个单元的砖头。如下图&#xff1a; 砖头可以旋转&#xff0c;两种砖头可以无限制提供。你的任务是计算用这两种来覆盖N*2的墙壁的覆盖方法。例如一个2*3的墙可…

Stable Diffusion结构解析-以图像生成图像!

手把手教你入门绘图超强的AI绘画&#xff0c;用户只需要输入一段图片的文字描述&#xff0c;即可生成精美的绘画。给大家带来了全新保姆级教程资料包 &#xff08;文末可获取&#xff09; AIGC专栏3——Stable Diffusion结构解析-以图像生成图像&#xff08;图生图&#xff0c…

【活动回顾】CSDN 1024 程序员节城市站系列活动·成都站 - 圆满结束!

文章目录 前言一、活动介绍二、精彩分享内容及活动议程2.1、1024 活动限量周边大放送2.2、《COC 成都社区情况和活动介绍》2.3、CSDN 创始人蒋涛寄语2.4、《AI 重构世界》2.5、《新技术助力企业降本增效》2.6、现场互动情况2.7、《探索开源世界&#xff0c;开拓创新思路》2.8、…

用C#实现最小二乘法(用OxyPlot绘图)

最小二乘法介绍✨ 最小二乘法&#xff08;Least Squares Method&#xff09;是一种常见的数学优化技术&#xff0c;广泛应用于数据拟合、回归分析和参数估计等领域。其目标是通过最小化残差平方和来找到一组参数&#xff0c;使得模型预测值与观测值之间的差异最小化。 最小二…

RSTP保护机制

BPDU保护 在交换设备上通常将直接与用户终端或文件服务器等非交换机设备相连的端口配置为边缘端口。 正常情况下&#xff0c;边缘端口不会收到RST BPDU。如果有人伪造RST BPDU恶意攻击交换设备&#xff0c;当边缘端口接收到RST BPDU时&#xff0c;交换设备会自动将边缘端口设置…

TensorFlow2实战-系列教程8:TFRecords数据源制作2

&#x1f9e1;&#x1f49b;&#x1f49a;TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 5、图像数据处理实例 5.1 读数据 import os import glob from datetime import date…

【Qt】QInputDialog setGeometry: Unable to set geometry 问题

QInputDialog setGeometry: Unable to set geometry 问题 文章目录 I - 问题背景II - 解决办法III - 参考链接 I - 问题背景 创建了一个 QMainWindow 并在上边创建了布局&#xff0c;尝试调用 QInputDialog 的 getInt 静态方法&#xff0c;结果运行时出现了以下警告 QWindows…

电商API接口的应用|电商跨境电商商品采集高效解决方案

电商API接口的应用|电商跨境电商商品采集高效解决方案 面对数十万亿元的跨境电商市场&#xff0c;以阿里巴巴国际站为代表的跨境电商数字平台&#xff0c;在政策、需求以及供应链的驱动下&#xff0c;为中小企业提供了全产业链、全供应链一体化综合服务&#xff0c;让越来越多…

机器学习复习(1)——任务整理流程

目录 固定的随机数种子 定义predict功能 拆分数据集 定义trainer 超参数设置 数据集载入 固定的随机数种子 在大量的机器学习与深度学习实验中&#xff0c;如果不进行特殊设置&#xff0c;我们的结果将不可复现&#xff0c;固定的随机数种子将会解决这个问题 def same…

字符串相关函数和文件操作

文章目录 1. C/C 字符串概述1.1 字符串常量1.2 字符数组 2. 字符串函数2.1 拷贝赋值功能相关函数&#xff08;覆盖&#xff09;2.1.1 strcpy2.1.2 strncpy2.1.3 memcpy2.1.4 memmove2.1.5 memset2.1.6 注意小点2.1.7 【函数区别】 2.2 追加功能相关函数2.2.1 strcat2.2.2 strnc…

使用plotly dash 画3d圆柱(Python)

plotly3D &#xff08;3d charts in Python&#xff09;可以画3维图形 在做圆柱的3D装箱项目&#xff0c;需要装箱的可视化&#xff0c;但是Mesh &#xff08;3d mesh plots in Python&#xff09;只能画三角形&#xff0c;所以需要用多个三角形拼成一个圆柱&#xff08;想做立…

Python qt.qpa.xcb: could not connect to display解决办法

遇到问题&#xff1a;qt.qpa.xcb: could not connect to display 解决办法&#xff0c;在命令行输入&#xff1a; export DISPLAY:0 然后重新跑python程序&#xff0c;解决&#xff01; 参考博客&#xff1a;qt.qpa.xcb: could not connect to displayqt.qpa.plugin: Could …

Ubuntu搭建国标平台wvp-GB28181-pro

目录 简介安装和编译1.查看操作系统信息2.安装最新版的nodejs3.安装java环境4.安装mysql5.安装redis6.安装编译器7.安装cmake8.安装依赖库9.编译ZLMediaKit9.1.编译结果说明 10.编译wvp-GB28181-pro10.1.编译结果说明 配置1.WVP-PRO配置文件1.1.Mysql数据库配置1.2.REDIS数据库…

监听项目中指定属性数据,点击或模块显示时

当项目中&#xff0c;需要获取某个页面上、某个标签上、有指定自定义属性时&#xff0c;需要在点击该元素时进行公共逻辑处理&#xff0c;或该元素在显示的时候进行逻辑处理&#xff0c;这时可以定义一个公共的方法&#xff0c;在每个页面引用&#xff0c;并写入数据即可 &…

OpenHarmony RK3568 启动流程优化

目前rk3568的开机时间有21s&#xff0c;统计的是关机后从按下 power 按键到显示锁屏的时间&#xff0c;当对openharmony的系统进行了裁剪子系统&#xff0c;系统app&#xff0c;禁用部分服务后发现开机时间仅仅提高到了20.94s 优化微乎其微。在对init进程的log进行分析并解决其…

【Spring Boot 3】异步线程任务

【Spring Boot 3】异步线程任务 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花费或多或…