【前端面试手撕题】事件委托、数组去重、合法URL、快速排序、全排列

这篇具有很好参考价值的文章主要介绍了【前端面试手撕题】事件委托、数组去重、合法URL、快速排序、全排列。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

FED1 事件委托

描述
请补全JavaScript代码,要求如下:

  1. 给"ul"标签添加点击事件
  2. 当点击某"li"标签时,该标签内容拼接".“符号。如:某"li"标签被点击时,该标签内容为”…"
    注意:
  3. 必须使用DOM0级标准事件(onclick)
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <style>
       /* 填写样式 */
    </style>
</head>

<body>
    <ul>
            <li>.</li>
            <li>.</li>
            <li>.</li>
    </ul>
    <!-- 填写标签 -->
    <script type="text/javascript">
        // 填写JavaScript
        document.querySelector('ul').onclick=function(e){
            e.target.innerText+='.'
        }
    </script>
</body>

</html>

FED2 数组去重

描述
请补全JavaScript代码,要求去除数组参数中的重复数字项并返回该数组。
注意:

  1. 数组元素仅包含数字
    示例1
    输入:
    _deleteRepeat([-1,1,2,2])
    复制
    输出:
    [-1,1,2]
<!DOCTYPE html>
<html>
    <head>
        <meta charset=utf-8>
    </head>
    <body>
    	
        <script type="text/javascript">
            const _deleteRepeat = array => {
                // 补全代码
                return [...new Set(array)] //使用set去重 用...
            }
        </script>
    </body>
</html>

FED3 合法的URL

描述
请补全JavaScript代码,要求以Boolean的形式返回字符串参数是否为合法的URL格式。
注意:

  1. 协议仅为HTTP(S)
<!DOCTYPE html>
<html>
    <head>
        <meta charset=utf-8>
    </head>
    <body>
    	
        <script type="text/javascript">
            const _isUrl = url => {
                // 补全代码
                return url.startsWith('https')
            }
        </script>
    </body>
</html>

FED4 快速排序

描述
请补全JavaScript代码,要求将数组参数中的数字从小到大进行排序并返回该数组。
注意:

  1. 数组元素仅包含数字
  2. 请优先使用快速排序方法
    示例1
    输入:
    _quickSort([0,-1,1,-2,2])
    复制
    输出:
    [-2,-1,0,1,2]
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <style>
       /* 填写样式 */
    </style>
</head>

<body>
    <!-- 填写标签 -->
    <script type="text/javascript">
        // 填写JavaScript
        const _quickSort = array => {
            if(array.length<=1) return array
            var mid=Math.floor(array.length/2)
            var midx=array.splice(mid,1)[0]
            var left=[]
            var right=[]
            for(let i=0;i<array.length;i++){
                if(array[i]<midx){
                    left.push(array[i])
                }else{
                    right.push(array[i])
                }
            }
            return _quickSort(left).concat([midx],_quickSort(right))
        }
    </script>
</body>

</html>

FED5 全排列

描述
请补全JavaScript代码,要求以数组的形式返回字符串参数的所有排列组合。
注意:

  1. 字符串参数中的字符无重复且仅包含小写字母
  2. 返回的排列组合数组不区分顺序
    示例1
    输入:
    _permute(‘abc’)
    复制
    输出:
    [‘abc’,‘acb’,‘bac’,‘bca’,‘cab’,‘cba’]

‘abc’的全排列等于 ('a’拼接上’bc’的全排列数组中的每一项) + ('b’拼接上’ac’的全排列数组的每一项) +
('c’拼接上’ab’的全排列数组的每一项)文章来源地址https://www.toymoban.com/news/detail-622469.html

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <style>
       /* 填写样式 */
    </style>
</head>

<body>
    <!-- 填写标签 -->
    <script type="text/javascript">
        // 填写JavaScript
        const _permute = string => {
            if(string.length===1){
                return [string]
            }
            const results=[]
            for(let s of string){
                const arr=string.split('').filter(str=>str!==s)
                _permute(arr.join('')).forEach(item=>{
                    results.push(s+item)
                })
            }
            return results
        }
    </script>
</body>

</html>

到了这里,关于【前端面试手撕题】事件委托、数组去重、合法URL、快速排序、全排列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 华为od 面试手撕真题【长度最小的子数组】

    给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1: 输入:target = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是

    2024年02月14日
    浏览(28)
  • JavaScript 手撕大厂面试题数组扁平化以及增加版本 plus

    现在的前端面试手撕题是一个必要环节,有点时候八股回答的不错但是手撕题没写出来就会让面试官印象分大减,很可能就挂了… 数组的 扁平化 其实就是将一个多层嵌套的数组转换为只有一层的数组 比如: [1, [2, [3, [4, 5]]]] = [1,2,3,4,5,6] 一、实现一个 flat() easy 难度 二、用

    2024年02月14日
    浏览(29)
  • 5个常见的前端手写功能:浅拷贝与深拷贝、函数柯里化、数组扁平化、数组去重、手写类型判断函数

    浅拷贝 浅拷贝是创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址,所以如果其中一个对象改变了这个地址,就会影响到另一个对象。 测试结果: 深拷贝 深拷贝是将

    2024年04月26日
    浏览(27)
  • 【JavaScript】手撕前端面试题:寄生组合式继承 | 发布订阅模式 | 观察者模式

    🧑‍💼个人简介:大三学生,一个不甘平庸的平凡人🍬 🖥️ NodeJS专栏:Node.js从入门到精通 🖥️ 博主的前端之路(源创征文一等奖作品):前端之行,任重道远(来自大三学长的万字自述) 🖥️ TypeScript知识总结:TypeScript从入门到精通(十万字超详细知识点总结) 👉

    2023年04月08日
    浏览(72)
  • 【JavaScript】手撕前端面试题:手写Object.create | 手写Function.call | 手写Function.bind

    🖥️ NodeJS专栏:Node.js从入门到精通 🖥️ 博主的前端之路(源创征文一等奖作品):前端之行,任重道远(来自大三学长的万字自述) 🖥️ TypeScript知识总结:TypeScript从入门到精通(十万字超详细知识点总结) 🧑‍💼个人简介:大三学生,一个不甘平庸的平凡人🍬 👉

    2024年02月21日
    浏览(44)
  • 【C#学习笔记】委托与事件 (从观察者模式看C#的委托与事件)

    转载请注明出处:🔗https://blog.csdn.net/weixin_44013533/article/details/134655722 作者:CSDN@|Ringleader| 主要参考: 委托(C# 编程指南) 事件介绍 C# 中的委托和事件简介 Delegate 类 Exploring the Observer Design Pattern微软技术文章翻译 委托是一种 引用类型 ,表示对具有特定参数列表和返回类型

    2024年02月04日
    浏览(40)
  • JS事件冒泡与JS事件代理(事件委托)

    通俗来讲,当触发(点击或者触摸之类的做法)有父元素的子元素的时候,事件会从事件源(被点击的子元素)开始逐级向上传播,触发父级元素的点击事件,一直会传到window。如果在某一层想要中止冒泡,使用 event.stopPropagation() 。下面见详细的代码: 我们可以发现,当点

    2024年02月09日
    浏览(35)
  • c# 事件与委托

    //在C#中, 事件是一种特殊的委托 ,它允许对象通知其他对象发生了某个特定的事件。 //事件通常用于GUI应用程序中,例如当用户单击按钮时,按钮控件会引发Click事件, //然后其他对象可以订阅该事件并执行相应的操作。 //以下是一个简单的示例,演示如何在C#中使用事件和

    2024年02月06日
    浏览(29)
  • Unity---委托与事件

    目录 1.委托和事件在使用上的区别是什么? 2. delegate委托 2.1示意图 2.2 DelegetTest.cs 2.3 Deleget_A.cs 2.4 Deleget_B.cs 2.5 运行unity. 点击按键 A  2.6 点击按键 B  3.Event 事件 3.1单个通知 3.1.1示意图  3.1.2 Event_Test.cs 3.1.3 Event_A.cs 3.1.4 运行 点击按键A  3.2多个通知 3.2.1示意图  3.2.2 Event_Test

    2024年02月07日
    浏览(41)
  • JS 事件委托

    JavaScript事件委托(Event delegation)又叫事件代理,是一种在父元素上监听事件,然后通过事件冒泡机制来处理子元素的事件的技术。通过事件委托,可以避免为每个子元素都绑定事件处理程序,提高性能并简化代码。 事件委托的基本原理是将事件处理程序绑定在父元素上,然

    2024年02月11日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包