当前位置: 首页 > news >正文

牛客JS题(二十二)数组过滤

注释很详细,直接上代码

涉及知识点:

  1. 合理封装
  2. 范围判断函数

题干:
在这里插入图片描述

我的答案

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /></head><body><select name="" id=""><option value="0">请选择销量范围</option><option value="1">&lt100</option><option value="2">100~500</option><option value="3">&gt500</option></select><ul><li>牛客logo马克杯</li><li>无盖星空杯</li><li>老式茶杯</li><li>欧式印花杯</li></ul><script>/*** 这题的封装自我感觉很满意,复用性杠杠的 * 两大亮点:* 1. priceRange以对象化封装调用函数* 2. rangejudgment考虑多种常用区间情况封装函数*/var cups = [{type: 1,price: 100,color: "black",sales: 60,name: "牛客logo马克杯",},{ type: 2, price: 40, color: "blue", sales: 100, name: "无盖星空杯" },{ type: 4, price: 60, color: "green", sales: 200, name: "老式茶杯" },{ type: 3, price: 50, color: "green", sales: 600, name: "欧式印花杯" },];var select = document.querySelector("select");var ul = document.querySelector("ul");// 补全代码//价格区间判断函数组let priceRange = {0: (sales) => true,1: (sales) => rangejudgment(sales, 0, 100, 0),2: (sales) => rangejudgment(sales, 100, 500, 1),3: (sales) => rangejudgment(sales, 500, false, 2),};/*** 选项改变事件* 为什么不用箭头函数?因为需要this;* 为什么需要this?因为判题是直接调用的压根没有点击* 当然被我注释的方法也是可以的*/select.onchange = function (e) {// let { value } = e.target;let value = this.value;let newList = cups.filter((item) => priceRange[value](item.sales));showList(newList, ul);};/*** 展示列表* @param {Array} list -列表* @param {HTMLElement} ul -ul元素* @returns {void}*/function showList(list, ul) {ul.innerHTML = "";list.forEach((item) => {let li = document.createElement("li");li.innerHTML = item.name;ul.appendChild(li);});}/*** 范围判断* @param {number} value -用于比较的数值* @param {number|boolean} firstNum -第一个数值(小)-若无限小则为false* @param {number|boolean} secondNum -第二个数值(大)-若无限大则为false* @param {number} [type=0] -判断类型:0-左闭右开,1-左闭右闭,2-左开右开,3-左开右闭* @returns {boolean} -判断结果*/const rangejudgment = (value, firstNum, secondNum, type = 0) => {try {switch (type) {case 0:return ((firstNum ? value >= firstNum : true) &&(secondNum ? value < secondNum : true));case 1:return ((firstNum ? value >= firstNum : true) &&(secondNum ? value <= secondNum : true));case 2:return ((firstNum ? value > firstNum : true) &&(secondNum ? value < secondNum : true));case 3:return ((firstNum ? value > firstNum : true) &&(secondNum ? value <= secondNum : true));default:throw new Error("type参数错误");}} catch (e) {console.log(e);return false;}};</script></body>
</html>

博客更新不是很及时,需要看后面内容的可以看看我的gitee仓库

牛客JS题Gitee仓库

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Router路由的使用
  • Hadoop的安装和使用-2024年08月01日
  • 初识C++ · 哈希表封装unordered_map/set
  • 新版pacs超声科工作量
  • IAP 程序升级原理解析
  • [网鼎杯2018]Unfinish解题,五分钟带你解题
  • 分享 | 某外资保险集团进一步提升数字身份管理水平 有助于中国业务的高速发展
  • 如何把uniapp 项目发布成Andriod App的流程
  • 【优秀python 数据分析案例】基于python的穷游网酒店数据采集与可视化分析的设计与实现
  • arthas的tt命令
  • ESP32在ESP-IDF环境下禁用看门狗
  • 【STL】 vector的底层实现
  • MongoDB基础【学习笔记】
  • Linux文件或图片名称中文乱码解决【适用于centos、ubuntu等系统】
  • MATLAB中“varargin”的作用
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 0x05 Python数据分析,Anaconda八斩刀
  • E-HPC支持多队列管理和自动伸缩
  • nfs客户端进程变D,延伸linux的lock
  • Selenium实战教程系列(二)---元素定位
  • Service Worker
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 初识 beanstalkd
  • 高性能JavaScript阅读简记(三)
  • 猴子数据域名防封接口降低小说被封的风险
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 深度学习在携程攻略社区的应用
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 微服务框架lagom
  • 我的面试准备过程--容器(更新中)
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 移动端唤起键盘时取消position:fixed定位
  • gunicorn工作原理
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​低代码平台的核心价值与优势
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (¥1011)-(一千零一拾一元整)输出
  • (3)STL算法之搜索
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (多级缓存)多级缓存
  • (二十三)Flask之高频面试点
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (接口封装)
  • (十)c52学习之旅-定时器实验
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • . Flume面试题
  • .DFS.
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET的微型Web框架 Nancy
  • .net开发日常笔记(持续更新)
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?