大厂面试精华面试刷题

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=2let b = Math.floor(Math.random() * (max - min) + min)//不包括最最小值50-2-1=47+2=49,0+2=2let 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.mzph.cn/diannao/1118.shtml

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

相关文章

【C++】飞机大战项目记录

源代码与图片参考自《你好编程》的飞机大战项目&#xff0c;这里不进行展示。 本项目是仅供学习使用的项目 飞机大战项目记录 飞机大战设计报告1 项目框架分析1.1 敌机设计&#xff1a;1.2 玩家飞机控制&#xff1a;1.3 子弹发射&#xff1a;1.4 游戏界面与互动&#xff1a;1.5…

解决Linux根分区空间不足的方法:利用Home分区进行扩容

前言 在进行系统安装时&#xff0c;一个常见的困扰是默认分区设置可能导致home分区拥有过多的空间&#xff0c;而root分区却显得十分紧缺。这种情况下&#xff0c;用户往往会陷入无法继续安装软件或存储文件的困境。本文将向您展示如何通过合理的调整&#xff0c;将home分区中多…

【6】mysql查询性能优化-关联子查询

【README】 0. 先说结论&#xff1a;一般用inner join来改写in和exist&#xff0c;用left join来改写not in&#xff0c;not exist&#xff1b;&#xff08;本文会比较内连接&#xff0c;包含in子句的子查询&#xff0c;exist的性能 &#xff09; 1. 本文总结自高性能mysql 6…

Python 面向对象——1.基本概念

本章学习链接如下&#xff1a; 基本概念与语法 类&#xff08;Class&#xff09;&#xff1a;定义了一组对象共有的属性和方法的蓝图。类是创建对象的模板。 对象&#xff08;Object&#xff09;&#xff1a;类的实例。对象包含实际的数据和操作数据的方法。 属性&#xff0…

NLP_知识图谱_三元组实战

文章目录 三元组含义如何构建知识图谱模型的整体结构基于transformers框架的三元组抽取baselinehow to use预训练模型下载地址训练数据下载地址 结构图代码及数据bertconfig.jsonvocab.txt datadev.jsonschemas.jsontrain.jsonvocab.json 与bert跟data同个目录model.pytrain.py…

原型和原型链--图解

https://juejin.cn/post/7255605810453217335 prototype是函数的属性&#xff08;一个对象&#xff09;&#xff0c;不是对象的属性&#xff0c;普通函数和构造函数的prototype属性是空对象&#xff5b;&#xff5d;&#xff08;其实有2个属性&#xff0c;一个是constructor&a…

Vue3: toRefs与toRef的基本使用

一、前言 本文主要介绍toRefs与toRef的基本使用。 二、内容 1、基本概念 作用: toRefs与toRef可以将一个响应式对象中的每一 个属性&#xff0c;转换为ref对象&#xff1b;不同 toRefs与toRef功能一致&#xff0c;但toRefs可以批量转换。 2、toRefs 如果把reactive定义的…

记录交叉编译环境配置--海思开发板的 嵌入式nginx和 php的移植

嵌入式 lnmp搭建的记录 一些交叉编译的配置环境思路分享&#xff1a;P&#xff1a;php编译PHP可能遇到的问题configure阶段&#xff1a;Makefile-make阶段&#xff1a;Makefile-make install阶段&#xff1a; N&#xff1a;Nginx 文章比较水&#xff0c;并没有没解决什么实际问…

二维码门楼牌管理应用平台建设:助力场所整改与消防安全

文章目录 前言一、二维码门楼牌管理应用平台的构建背景二、二维码门楼牌管理应用平台在场所整改中的作用三、二维码门楼牌管理应用平台的意义与价值四、二维码门楼牌管理应用平台的未来展望 前言 随着城市管理的日益精细化&#xff0c;二维码门楼牌管理应用平台的建设成为了提…

C++ - STL详解(七)— stack和queue的介绍及使用

目录 一. stack 1.1 stack的介绍 1.2 stack的定义 1.3 stack的使用 ​编辑 二. queue 2.1 queue的介绍 2.2 queue的定义 2.3 queue的使用 一. stack 1.1 stack的介绍 stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除…

如何通过Postgres的日志进行故障排查?

文章目录 一、配置日志记录二、查看和分析日志三、使用日志进行故障排查的示例四、总结 在进行数据库管理和维护时&#xff0c;日志分析是一项至关重要的技能。PostgreSQL的日志记录功能可以帮助我们追踪数据库的运行状态&#xff0c;定位问题&#xff0c;以及优化性能。下面&a…

【Java】如何获取客户端IP地址

在项目中往往涉及到“获取客户端IP地址”&#xff0c;常见到下面这样子的代码&#xff1a; package com.utils;import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.http.server.reactive.ServerHttpRequest; import java.net…

逻辑运算符

一 介绍 用于连接多个条件&#xff08; 多个关系表达式&#xff09; &#xff0c; 最终的结果也是一个 boolean 值。 &&#xff1a;逻辑与&&&#xff1a;短路与|&#xff1a;逻辑或||&#xff1a;短路或&#xff01; 取反^&#xff1a;异或 二 逻辑运算规则 a&a…

K210基础实验——独立按键中断

前言 学习K210开发板的独立按键和中断功能 一、涉及到的外设资源是K210开发板上的BOOT按键和RGB灯 二、BOOT按键按下&#xff0c;MCU上连接BOOT的IO口变为低电平&#xff0c;松开后为高电平 三、引脚对应关系 BOOT : IO16 RGB灯&#xff1a; R:IO6 G:IO7 B:IO8 四、在…

【linux】多路径|Multipath I/O 技术

目录 简略 详细 什么是多路径? Multipath安装与使用 安装 使用 Linux下multipath软件介绍 附录 配置文件说明 其他解 简略 略 详细 什么是多路径? 普通的电脑主机都是一个硬盘挂接到一个总线上&#xff0c;这里是一对一的关系。 而到了分布式环境&#xff0c;主机和存储网络连…

UDP协议深度解析:从原理到应用全面剖析

⭐小白苦学IT的博客主页⭐ ⭐初学者必看&#xff1a;Linux操作系统入门⭐ ⭐代码仓库&#xff1a;Linux代码仓库⭐ ❤关注我一起讨论和学习Linux系统 前言 随着互联网的蓬勃发展&#xff0c;网络通信协议成为了支撑其稳定运行的关键。UDP协议作为网络通信协议中的重要一员&…

华为ensp中rip和ospf路由重分发 原理及配置命令

作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年4月20日20点21分 路由重分发&#xff08;Route Redistribution&#xff09;是指路由器将从一种路由协议学习到的路由信息&#xff0c;通过另一种路由协议通告出去的功…

现货白银保证金交易要先分析趋势

现货白银是保证金交易品种&#xff0c;买卖过程中可能会涉及数十倍的资金杠杆&#xff0c;所以它对投资者的分析水平和交易水平的要求都比较高&#xff0c;所以在进入这个市场之前&#xff0c;投资者需要先学习一些基本的分析方法&#xff0c;当中可以分为基本面和技术面两大流…

C++智能指针(二十)

一.RAII&#xff08;Resource Acquisition Is Initialization&#xff09; RAII资源获取即初始化&#xff0c;RAII的思想就是在构造时初始化资源&#xff0c;或者托管已经构造的资源。在析构的时候释放资源。一般不允许复制或赋值&#xff0c;并且提供若干的资源访问的方法。比…

URL地址解析至页面展示全过程(面试详细解答)

目录 1、解析URL 2、缓存判断 ​编辑3、DNS解析 ​编辑4、获取MAC地址 5、TCP三次握手 6、HTTP请求 7、服务器处理请求&#xff0c;返回HTTP响应 8、页面渲染 9、TCP四次挥手 10、浏览器解析HTML 11、浏览器布局渲染 1、解析URL 首先会对 URL 进行解析&#xff0c;…