(1)获取url参数

描述:
获取 url 中的参数

  1. 指定参数名称,返回该参数的值 或者 空字符串
  2. 不指定参数名称,返回全部的参数对象 或者 {}
  3. 如果存在多个同名参数,则返回数组
  4. 不支持URLSearchParams方法

示例1
输入:http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe key
输出:[1, 2, 3]
解题思路:

function getUrlParam(sUrl, sKey) {var qs = sUrl.split('?')[1].split('#')[0],args = {},items = qs.length ? qs.split('&') : [],item = null,name = null,value = null;for (var i=0; i<items.length; i++) {item = items[i].split('=');name = item[0];value = item[1];if (!args[name]) {args[name] = value;} else {if (Array.isArray(args[name])) {args[name].push(value);} else {args[name] = [args[name], value];}}}return sKey ? args[sKey] || '' : args;
}

虽然用例全部通过了,但事实上还需要进一步判断url具体形式,例如先判断是否存在?再分割。

(2)数组去重

描述:
为 Array 对象添加一个去除重复项的方法
示例1
输入:[false, true, undefined, null, NaN, 0, 1, {}, {}, ‘a’, ‘a’, NaN]
输出:[false, true, undefined, null, NaN, 0, 1, {}, {}, ‘a’]
解题思路:
使用ES6中新增的Set对象

Array.prototype.uniq = function () {return Array.from(new Set(this));
}

不使用Set对象:

Array.prototype.uniq = function () {var arr = [],flag = true;for (var i=0;i<this.length;i++) {if (arr.indexOf(this[i]) == -1) {if (this[i] != this[i]) {if (flag) {arr.push(this[i]);flag = false;}} else {arr.push(this[i]);}}}return arr;
}

判断是否为NaN:
isNaN()是ES5的方法,Number.isNaN()是ES6的方法
可能有一些同学会认为isNaN直译为“是不是NaN”,其本意不是,isNaN本意是通过Number方法把参数转换成数字类型,如若转换成功,则返回false,反之返回true,它只是判断参数是否能转成数字,不能用来判断是否严格等于NaN。如果要判断某个值是否严格等于NaN不能用这个方法。
ES6提供了Number.isNaN方法用来判断一个值是否严格等于NaN,它会首先判断传入的值是否为数字类型,如不是,直接返回false。
NaN不等于NaN
数组去重算法参考:https://blog.csdn.net/qxuewei/article/details/52837083
Set对象:
Set对象是ES6中新增的类型,可以自动排除重复项,生成Set对象后,可以轻松遍历它所包含的内容。
Array.from方法可以将 Set 结构转为数组。
类数组对象的特点有以下四点:

  • 有数字索引
  • 有长度
  • 是个对象
  • 能被迭代

Array.from(arr)和[…arr]的区别就是在转换类数组对象时,如果不含迭代器属性和方法,那么[…arr]这种转换方法会报错!

(3)设置文字颜色

描述:
请使用嵌入样式将所有p标签设置为红色文字
解题思路:
使用JS返回所有p标签元素(NodeList)

const ele = document.querySelectorAll('p');
for (var i=0;i<ele.length;i++) {ele[i].style.color = 'red';
}

(4)模块

描述:
完成函数 createModule,调用之后满足如下要求:
1、返回一个对象
2、对象的 greeting 属性值等于 str1, name 属性值等于 str2
3、对象存在一个 sayIt 方法,该方法返回的字符串为 greeting属性值 + ', ’ + name属性值
解题思路:

function createModule(str1, str2) {var obj = {greeting: str1,name: str2,sayIt: function () {return obj.greeting + ', ' + obj.name;}};return obj;
}

根据《JavaScript高级程序设计(第3版)》,修改程序,避免每创建一个对象实例就要执行一次函数,直接将属性和方法赋给this对象,没有显示的创建对象,没有return语句:

function createModule(str1, str2) {function Obj (str1, str2) {this.greeting = str1;this.name = str2;this.sayIt = sayIt;}function sayIt () {return this.greeting +', ' + this.name;}return new Obj(str1, str2);
}

【整理】牛客网编程题前端篇(较难难度)相关推荐

  1. Python 牛客网编程题输入用例问题

    Python 牛客网编程题的输入用例 前言 切入正题 输入字符串 输入整数 输入列表 后记 前言 在牛客网刷题的时候,发现明明在python本地编译器能够轻松解决的输入用例问题,到牛客网在线编译就得好 ...

  2. 牛客网编程题python_牛客网数据结构练习题

    第一次使用牛客做编程题,刚开始不了解如何输入输出,查了查才知道.我用的是语言是 Javascript v8 6.0.0 readline() 表示得到输入的字符串,如果是多行的话,每readline一 ...

  3. python牛客网编程题_一波优秀的自学编程语言网站

    网课已经开设两三个月了 同学们上网课的效果怎么样呢? 特别是学编程的同学 没有了学校的学习氛围 没有了老师面对面教学指导 你是否为了编程而焦头烂额,生无可恋呢? 没事,现在同学们的福利来啦! 下面是给 ...

  4. python牛客网编程题_【面经】小米软件开发一面(python)面经 2020 2020

    作者:JessyTsui https://www.nowcoder.com/discuss/580721?type=2&order=0&pos=15&page=1&ch ...

  5. 牛客网刷题 入门篇 基础语法

    VL1 四选一多路器 四选一多路器_牛客题霸_牛客网 `timescale 1ns/1ns module mux4_1( input [1:0]d1,d2,d3,d0, input [1:0]sel, ...

  6. 牛客网编程题——合唱团(网易2017)

    这题在编程达人面前应该算是水题,但这算是我第一个做出来的动态规划程序,作为纪念,分享一下.题目链接: https://www.nowcoder.com/practice/661c49118ca2419 ...

  7. 牛客网—编程题(1)牛牛的礼物

    题目描述 众所周知,牛妹有很多很多粉丝,粉丝送了很多很多礼物给牛妹,牛妹的礼物摆满了地板.地板是N\times MN×M的格子,每个格子有且只有一个礼物,牛妹已知每个礼物的体积.地板的坐标是左上角(1 ...

  8. 牛客网编程题python输入输出_牛客网算法题目记录

    车站建设问题 有10^8个村庄排在一条公路上,依次编号为0~10^8-1,相邻村庄距离为1,其中有n个村庄居住着牛牛,居住着牛牛的村庄从小到大依次为a0~an-1,其中保证a0=0. 现在需要建设车站 ...

  9. 牛客网 [编程题]数字和为sum的方法数

    题目描述: 给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数. 当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案. 输入描述: 输入为两行:第一行 ...

  10. 牛客网 [编程题]餐馆

    题目描述: 某餐馆有n张桌子,每张桌子有一个参数:a 可容纳的最大人数: 有m批客人,每批客人有两个参数:b人数,c预计消费金额. 在不允许拼桌的情况下,请实现一个算法选择其中一部分客人,使得总预计消 ...

最新文章

  1. 【scala】类的定义和单例对象
  2. Trunk Club:颠覆男士时装零售的创业公司_第1页_福布斯中文网
  3. 提高工作效率必备神器
  4. mqtt调试助手_物联网入门,如何使用MQTT协议,连接Tlink物联网平台
  5. Java多线程(4)--线程的同步解决线程安全问题
  6. Linux命令与shell
  7. python selenium span内容读取_【程仁智推荐】Selenium自动化测试入门
  8. 大学用编程每月多赚2000块,是种什么体验?
  9. 中国首枚芯片邮票问世:搭载NFC芯片 可APP读取
  10. C语言实现简单的单例模式
  11. 什么样的领导会给公司造成损失呢?
  12. 处理手机上点击链接出现的蓝色边框
  13. Hadoop学习入门(二)——部署关键问题1:OpenSSH 密钥管理(1)
  14. Linux CFS调度系统----周期性调度器
  15. catia逆向建模步骤_catia与逆向工程
  16. javascript弹窗和基本数据类型
  17. 知名大企业的愿景和使命
  18. Windows实例通过IIS如何搭建多个FTP站点
  19. Android9.0支持exFat格式u盘识别
  20. Python模拟订单号生成

热门文章

  1. BF2 战地风云2常见问题解答
  2. [转]跟我一起写Makefile系列
  3. jquery快速入门(二)
  4. ThinkPHP redirect 传参
  5. 《20171117-构建之法:现代软件工程-阅读笔记》
  6. 【React Native开发】React Native控件之RefreshControl组件具体解释(21)
  7. Js、jquery学习笔记
  8. (USB HID) Report Descriptor 理解
  9. VMware 12PRO安装Mac OS X 10.10.5
  10. VS2015中搭建lua环境