大厂面试精华面试刷题

1.自定义unshift实现相同效果

2.数组去重

用vs2019来写这种练习题可以更直观的查看代码执行的效果,最后的代码是控制控制台执行完毕后不自动关闭

'use strict';


let arr = [1, 1, 2, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10]
//1.//查重最简单的方法for循环结合splice从数组中删除重复的
//for (var i = 0; i < arr.length; i++) {
//    for (var a2 = 0; a2 < arr.length; a2++) {
//        if (arr[i] == arr[a2] && i != a2) {
//                arr.splice(i, 1)
//        }
//    }
//}
//console.log(arr);
//2.声明一个空数组,使用findindex或者indexof对新旧数组对比
//let newArr = []
//for (var i = 0; i < arr.length; i++) {
//    /* newArr.indexOf(arr[i]) == -1 ? newArr.push(arr[i]):''*/
//    newArr.findIndex((item) => {
//        console.log(item);
//        return item == arr[i]
//    }) == -1 ? newArr.push(arr[i]) : ''
//}
//console.log(newArr);

//-----------------------------------------------
//3【sort】排序法第i个不等于i+1的值或者i-1的值,对数组进行splice或者声明新数组去接受没有相同的值
//arr = arr.sort((a, b) =>a-b)
//console.log(arr);
//for (var i = 0; i < arr.length; i++) {
//    arr[i] == arr[i +1] ? arr.splice(i, 1) : ''
//}
//console.log(arr);
//----------------------------------------------------
//4.Es6新增语法set
//new Set(arr)出来结果是一个对象形式的需要解析这里直接用展开运算符展开到数组就可以
/*arr = [...new Set(arr)]*/
//也可以结合es6新语法Array.from处理set,map等可迭代对象
arr = Array.from(new Set(arr))
//效果是一样的,查重就说这几种,数组的查重可以结合很多数组的处理方法进行操作
console.log(arr);
process.stdin.setRawMode(true);
process.stdin.resume();
process.stdin.on('data', () => {
    process.exit();
});

3.获取指定范围内的随机数

// Math.random()方法能取0–1的随机数,它的范围是[0,1),也就是取包括0但不包括1的随机数。

//用一个方法

// Math.random()*100 就是0-99.9999999*
//如果想包括100就使用向上取整,不包括100就使用向下取整的方法
//Math.ceil()向上取整
// let a = Math.round(Math.random() * 100)四舍五入
// let a = Math.floor(Math.random() * 100)
function names(min, max) {
  //假如说最大值传的是50最小值2
  //max-min就是48,后加上一个min值就是最大值50了,这时候有就算随机数取得最小值0现在的最小值也就是2了
  //想不包含首位的话在括号里面先减去2,就是最大值减了头尾,然后50-2-2=46+2=48这时候最小值就是2最大值48
  //显然不是我们想要的效果,时候再最小值上加1也就是括号在面的数字48+1就是49了这样的话就实现了我们想要的效果
  let a = Math.round(Math.random() * (max - min - 2) + min + 1)
  //不包括最大值50-2-1=47+2=49,0+2=2
  let b = Math.floor(Math.random() * (max - min) + min)
  //不包括最最小值50-2-1=47+2=49,0+2=2
  let c = Math.ceil(Math.random() * (max - min - 1) + min + 1)
  console.log('不包括最大最小值', a, '/n不包括最大值', b, '/n不包括最小值', c);
}
setInterval(() => {
  names(2, 50)
}, 200);

4.根据输入的范围求出里面的质数有哪些

let arr = []
function zs(a = 0, b = 10) {
   
    for (let i = a; i < b;i++) {
        if (i > 0) {
            //声明一个变量用来判断是否是质数声明在这里每次循环都能重新将变量赋值
            let count = 0;
            /*首先就把除数0排除掉*/
            for (let c = 0; c < i; c++) {
                //c<i就把i本身已经排除掉
                //当除数可以被整除时就会让count+1说明除了1和本身外还有其他数可以整除
                if (c > 1 && i % c == 0) {
                    count+=1
                }
               
            }
            //所以只有count等于0没有进入上面判断时才能证明是质数
            if (count == 0) {
                arr.push(i)
            }
        }
    }
}
zs(0, 1000)
console.log(arr);

5.URL参数提取

插入一个新的参数
URLSearchParams.append(name, value)

需要删除的参数名 

URLSearchParams.delete(name)

URLSearchParams.entries() 方法返回一个迭代器,允许遍历该对象中包含的所有键/值对。迭代器返回键/值对,其顺序与它们在查询字符串中出现的顺序相同。每一组键和值都是字符串对象。

let url = 'https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=123&oq=for%2520continue&rsv_pq=d2077dff0019b21d&rsv_t=11887hitH4b96AzzxhNk5VO9gAUB%2F5mWGIJ5w7wHBW0Ngr4GbDTO7nZhrfM&rqlang=cn&rsv_dl=tb&rsv_enter=0&rsv_btype=t&inputT=3263&rsv_sug3=332&rsv_sug1=253&rsv_sug7=101&rsv_sug2=0&rsv_sug4=5844'
function query(params) {
  let ur = params.split('?')[1]
  //URLSearchParams用于处理查询字符串
  const urlParams = new URLSearchParams(ur)
  //obj.fromentries中用于将键值对数组转换为对象的方法。它接受一个键值对的数组,然后返回一个由这些键值对组成的对象。
  //obj.entries()将对象里面的键值遍历成对象形式的数组里面的键值数组 {['ie', 'utf-8'],}
  let wwe = Object.fromEntries(urlParams.entries())
  console.log(wwe);
}
query(url)

6.数组扁平化操作

两种方法

let arr = [1, 2, 3, [4, 5, 6, [7, 8,]], 9, [10, 11, [12, 13]]]
//实现数组扁平化效果
// const flatten = function (arr) {
//   //使用while结合some来处理数组
//   while (arr.some(arr => Array.isArray(arr))) {
//利用展开运算符循环拼接数组
//     arr = [].concat(...arr)
//   }
//   return arr
// }
// console.log(flatten(arr));
// 使用reduce实现数组扁平化操作
function flatten(arr) {
  return arr.reduce((flat, current) => {
    return flat.concat(Array.isArray(current) ? flatten(current) : current)
  }, []);
}
console.log(flatten(arr));

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

win10 系统怎么开启 guest 账户?

win10 系统怎么开启 guest 账户&#xff1f; 段子手168 前言&#xff1a; guest 账户即所谓的来宾账户&#xff0c;我们可以通过该账户访问计算机&#xff0c;如打印机共享等&#xff0c;但会在一定程度上受到限制。下面分享 WIN10 系统开启 guest 来宾账户的几种方法。 方法…

【Transformer】detr梳理

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 detr detr 1. 引言 论文&#xff1a; https://arxiv.org/pdf/2005.12872v3.pdf 时间&#xff1a; 2020.5.26 作者&#xff1a; Nicolas Carion?, Fra…

SnapGene Mac激活版 分子生物学软件

SnapGene Mac是一款功能全面、操作便捷的综合性分子生物学软件&#xff0c;专为Mac用户打造。它集成了DNA序列编辑、分析、可视化和团队协作等多种功能&#xff0c;为科研人员提供了一个高效、可靠的分子生物学研究工具。 SnapGene Mac激活版下载 在SnapGene Mac中&#xff0c;…

【Hadoop大数据技术】——Sqoop数据迁移(学习笔记)

&#x1f4d6; 前言&#xff1a;在实际开发中&#xff0c;有时候需要将HDFS或Hive上的数据导出到传统关系型数据库中&#xff08;如MySQL、Oracle等&#xff09;&#xff0c;或者将传统关系型数据库中的数据导入到HDFS或Hive上&#xff0c;如果通过人工手动进行数据迁移的话&am…

美容预约小程序:简单三步,开启高效预约模式

在当今的数字化时代&#xff0c;一个小程序可以极大地提高美容院的效率和客户满意度。下面我们将详细说明如何通过以下步骤来搭建一个美容院预约小程序。 首先&#xff0c;你需要注册并登录到乔拓云网&#xff0c;这是 一个在线平台&#xff0c;可以帮助你快速创建并管理你的小…

Kafka集群搭建可视化指南

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Kafka集群搭建可视化指南 前言准备工作硬件要求环境准备 kafka集群的部署与配置3.1 单节点部署与多节点集群搭建单节点部署&#xff1a;多节点集群搭建&#xff1a; 3.2 Broker配置与优化3.3 Topic的创…

快速访问github

修改本地hosts文件 GitHub访问慢的原因在于域名解析&#xff0c;通过修改本地的hosts文件&#xff0c;将远程DNS解析改为本地DNS解析。 fang 步骤1&#xff1a;打开hosts文件&#xff08;没有就创建&#xff09; host所在位置&#xff1a; C:\Windows\System32\drivers\etc…

销售经理(多继承/虚基类)

根据下图类之间的继承关系&#xff0c;以及main和输出定义&#xff0c;定义Staff类、Saleman类、Manager类和SaleManager类。 Staff类包含的数据成员有编号&#xff08;num)&#xff0c;姓名&#xff08;name)&#xff0c;基本工资&#xff08;basicSale&#xff09;。Saleman类…

[lesson42]类型转换函数(下)

类型转换函数(下) 类型转换函数 C类中可以定义类型转换函数 类型转换函数用于将类对象转换成其他类型 语法规则&#xff1a; 类型转换函数 与转换构造函数具有同等的地位使得编译器有能力将对象转换为其他类型编译器能够隐式的使用类型转换函数 无法抑制隐式的类型转换函…

项目实践:贪吃蛇

引言 贪吃蛇作为一项经典的游戏&#xff0c;想必大家应该玩过。贪吃蛇所涉及的知识也不是很难&#xff0c;涉及到一些C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32 API等。这里我会介绍贪吃蛇的一些思路。以及源代码也会给大家放到文章末尾。 我们最终的…

二维码门楼牌管理应用平台建设:取保候审的智能化监管

文章目录 前言一、取保候审的传统监管困境二、二维码门楼牌管理应用平台的优势三、取保候审备案信息的智能化处理四、保障居民合法权益五、展望未来 前言 随着信息技术的飞速发展&#xff0c;二维码门楼牌管理应用平台已成为现代社区治理的重要工具。本文重点探讨如何借助该平…

Vue【路由】

1&#xff1a;什么是单页应用程序&#xff08;single page application&#xff09; 所有得功能在一个html页面上实现 2&#xff1a;单页面应用程序的优缺点 优点&#xff1a;按需更新性能高&#xff0c;开发效率也高&#xff0c;用户的体验较好 缺点&#xff1a;学习成本高…

卷王问卷考试系统/SurveyKing调查系统源码

SurveyKing是一个功能强大的开源调查问卷和考试系统&#xff0c;它能够快速部署并适用于各个行业。 这个系统提供了在线表单设计、数据收集、统计和分析等功能&#xff0c;支持20多种题型&#xff0c;提供多种创建问卷的方式和设置。 项 目 地 址 &#xff1a; runruncode.c…

JavaFX--基础简介(1)

一、介绍 中文官网&#xff1a;JavaFX中文官方网站OpenJFX 是一个开源项目,用于桌面、移动端和嵌入式系统的下一代客户端应用程序平台。openjfx.cn是OpenJFX(JavaFX)的标准中文翻译网站&#xff0c;致力于方便开发者阅读官方文档和教程。https://openjfx.cn/ JavaFX 是一个开…

2024第八届图像、信号处理和通信国际会议 (ICISPC 2024)即将召开!

2024第八届图像、信号处理和通信国际会议 &#xff08;ICISPC 2024&#xff09;将于2024年7月19-21日在日本福冈举行。启迪思维&#xff0c;引领未来&#xff0c;ICISPC 2024的召开&#xff0c;旨在全球专家学者共襄盛举&#xff0c;聚焦图像信号&#xff0c;在图像中寻找美&am…

袁庭新ES系列15节|Elasticsearch客户端基础操作

前言 上一章节我们介绍了搭建Elasticsearch集群相关的知识。那么又该如何来操作Elasticsearch集群呢&#xff1f;在ES官网中提供了各种语言的客户端&#xff0c;我们在项目开发过程中有多种Elasticsearch版本和连接客户端可以选择&#xff0c;那么他们有什么区别&#xff1f;这…

uniapp Android 插件开发教程

一、下载uniapp提供的SDK Android 离线SDK - 正式版 | uni小程序SDK 二、在uniapp创建一个项目 查看包名&#xff1a;发行--> 原生app 云打包 三、进入dcloud官网 开发者中心 进入 应用管理 --> 我的应用 --> 点击应用名称-->各平台信息-->新增 这里需要这…

【可视化大屏开发】19. 加餐-百度地图API实现导航加线路热力图

需求 Web端使用场景中会涉及到地图导航路线情况&#xff0c;并利用热力图显示路况信息。 实现效果如下&#xff1a; 输入起始地点&#xff0c;选择并开始导航 最终效果 思路步骤 利用百度地图API显示地图交通拥堵情况的热力图&#xff0c;需要按照以下步骤进行开发 步骤1&a…

面试被问懵了:手撕 Transformer

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学&#xff0c;针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 今年最大…

Vue入门篇:概念,快速入门,插值表达式,核心特性,基本Vue指令

目录 1.Vue是什么2.快速入门3.插值表达式{{}}1.作用:2.语法:3.插值表达式的注意点: 4.Vue响应式核心特性5.Vue指令 1.Vue是什么 Vue是一个流行的JavaScript框架&#xff0c;用于构建用户界面。它是一种用于构建单页面应用程序&#xff08;SPA&#xff09;的渐进式框架&#xff…