javascript数据结构和算法 第一章(编程体验)一

手把手教你用 JavaScript 实现常见数据结构与算法 你是否遇到过这样的场景?写前端代码时想优化列表渲染性能,却不知道用链表还是数组更高效;面试时被问“用 JS 实现一个栈”,结果卡壳在 API 设计;想自己写个小框架,却对虚拟 DOM 的树结构遍历一头雾水?本文正是为解决这些问题而生:覆盖6 类核心数据结构(数组、链表、栈、队列、树、图)和5 大经典算法(排序、搜索、递归、动态规划、贪心),用 JS 代码+生活案例,让你“既能写代码,又懂为什么这么写”。本文从“生活场景”切入,先讲数据结构(像认识工具),再讲算法(像学习工具的用法),最后用实战案例串联。 阅读详情

声明和初始化变量


Javascript变量默认是全局作用域的.严格来说,使用之前是不需要定义的.

当一个javascript变量在没有被声明之前直接进行初始化,它就是一个全局变量.在这本书中,我们沿用编译语言如c++和java的编程约定.在使用变量之前都进行声明.

这还有一个附带的好处,声明的变量可以作为本地变量.

我们将会在本章节的后面讨论更多关于变量的作用域.

 

声明javascript变量,使用关键字var 变量名称.可选择的,可以带上赋值表达式.

下面是一些例子

var number;

var name;

var rate = 1.2;

var getting = “hello world”

var flag = false;

 

Javascript的算术和数学函数库

Javascript使用标准的数学操作符

+ 加法

- 减法

* 乘法

/ 除法

% 取模运算

 

Javascript同样有一个数学函数库,你可以使用它来进行高级函数的编写 例如开方,绝对值,三角运算.算术操作符沿用标准的优先级顺序.

当然括号“()”可以用来修改这些优先级顺序.

 

例子1-1 几个关于算术运算的例子,同时包括了使用几个数学函数库里的函数.

var x = 3;

var y = 1.1;

print(x+y);

print(x*y);

print((x+y)*(x-y))

var z = 9;

print(Math.sqrt(z));

print(Math.abs(y/x));


如果你不想或者不需要上面显示的精度,你可以格式化数字到一个固定的精度.

var x = 3;

var y = 1.1;

var z = x*y;

print(z.toFixed(2));


判断表达式


判断表达式通过使用布尔表达式来判断到底执行哪个表达式语句.

在这本书中我们使用的两个判断表达式是if表达式和switch表达式.

 

if表达式 有三种形式:

简单的if

if-else 表达式

if-else if表达式

 

例子1-2 如何编写判断表达式.

var mid = 25;

var high = 50;

var low = 1;

var current = 13;

var found = -1;

if(current < mid){

mid = (current-low)/2;

}


例子1-3演示if-else 表达式

var mid = 25;

var high = 50;

var low = 1;

var current = 13;

var found = -1;

if(current < mid){

mid = (current-low)/2;

}else{

mid = (current + high ) /2;

}



例子1-4 演示if-else if 表达式

var mid = 25;

var high = 50;

var low = 1;

var current = 13;

var found = -1;

if(current < mid){

mid = (current-low)/2;

}else if{

mid = (current + high ) /2;

}else{

found = current;

}




在这本书中另一个判断结构就是switch 表达式.

当你有好多个简单的判断时,这个表达式能提供了一个更加清晰,更加结构化的语句.

例子1-5 演示如何使用switch判断语句.

 

putstr("Enter a month number: "); 

var monthNum = readline(); 

var monthName; 

switch (monthNum) {   

case "1":   

  monthName = "January";    

  break;   

case "2":   

   monthName = "February";   

   break;  

 case "3":    

   monthName = "March";     

   break;

 case "4":

   monthName = "April";   

   break;  

 case "5":     

  monthName = "May";    

  break;   

case "6":    

  monthName = "June";    

  break;  

 case "7":

monthName = "July";    

  break;  

case "8":  

monthName = "August";  

    break; 

case "9":      

monthName = "September";    

break; 

case "10":    

monthName = "October";    

break;  

case "11":     

monthName = "November";     

break;  

case "12":     

monthName = "December";  

break;   

default:    

print("Bad input");

 } 

 

这是解决这个问题最高效的方法吗?不是,但是它很好的演示了switch判断语句是如何工作的.

javascript的switch判断语句 和其他编程语言主要区别就是被判断的表达式可以是任何类型的数据, 不像C++和java那样需要完整的数据类型.

事实上,你会发现在之前的例子中,我们将月份的值当做字符串类型,而不是将它们转化为数字类型.这是因为我们可以在javascript中使用switch语句来比较字符串.


手机APP开发之MIT Appinventor详细实战教程(五),通过情报类APP实际编程来准确的表达数据库的原理和用途 上一节主要介绍了有关于数据库的一些应用和概念,以及比较抽象的原理。可以通过上一篇文章来,大体对数据库有一个总体的了解。但是数据库如何使用,并且他内在的真正原理究竟是什么,上次说的并不是特别清楚。这次我们通过自制的一个APP来,从侧面反映数据库真正的用途和其内在原理。 一、存储类APP的简单介绍 首先这个APP的功能只有一个。也较为简单。它的功能就是存储数据和提取数据。存储数据需要往数据库添加... 阅读详情

相关推荐

JavaScript深入讲解数据结构与算法

本文还有配套的精品资源,点击获取 简介:《用JavaScript来介绍数据结构与算法》是一份系统的编程资料,通过JavaScript语言深入剖析数据结构与算法的核心概念。本资料详细介绍和比较了数组、链表、栈、队列、哈希表、树和图等数据结构,并且讨论了排序、搜索、动态规划、贪心算法、回溯法等重要算法。掌握这些知识点对于JavaScript开发者而言是提升编程技能和优化代码性能...

weixin_35019679的博客 1011

变量的声明、变量的定义、变量的初始化

变量的声明:用于向程序表明变量的类型和名字。 变量的定义:用于为变量分配存储空间,还可以为变量指定初始值。 变量的初始化:为变量指定初始值。 广义上来说,变量的声明有两种情况: 1.需要建立存储空间的声明。例如:int a,我们在声明的时候就建立的存储空间。 2.不需要建立存储空间的声明。例如: extern int a,变量a 是在别的文件中定义的。 这里,第一种情况是定义性声明(defin...

哈雷的博客 1万+

JavaScript算法与数据结构实战教程

本文还有配套的精品资源,点击获取 简介:本教程深入解析如何在JavaScript中实现算法与数据结构,这些基础知识是计算机科学的核心,对提升编程效率和优化程序性能至关重要。教程涵盖了算法的定义、分类、复杂度分析,基本和高级数据结构,以及在JavaScript中的实现方法。通过案例和实战练习,学习者可以掌握排序、搜索算法,递归与循环的使用,并了解如何在在线平台上应用这些知识,...

weixin_30995917的博客 1395

项目6总结:创建与使用存储过程

任务6.1

weixin_61961436的博客 1184

Morphine-JS:用JavaScript编写的完整数据结构库

吗啡 用JavaScript编写的完整数据结构库。 数据结构 堆 队列 出队 哈希图 哈希集 堆 链表 MultiHashMap 作者 Zakaria Maaraki-初期工作 执照 此项目已获得MIT许可证的许可-有关详细信息,请参阅文件

在 Ubuntu 22.04 上配置 SonarQube 与 CI/CD 流水线实现自动化代码审查

本文详细介绍了在Ubuntu 22.04系统上配置SonarQube并与CI/CD流水线集成的完整流程,实现自动化代码审查。从环境准备、数据库配置到核心参数调优,再到与Jenkins和GitHub Actions的深度集成,提供了实战技巧和性能优化建议,帮助团队提升代码质量监控效率。

weixin_28829325的博客 258

变量的声明及初始化

1 //声明变量的同时进行初始化 2 int intVariable = 10; 3 4 //先声明一个变量,然后再初始化 5 string strVariable; 6 strVariable = "Variable"; 7 8 //同时声明多个变量并初始化,其中变量的类型必须一致 9 int intVarialbe1 = 10, intVariable...

weixin_30549175的博客 275

通信工程学习:什么是OLT光线路终端

OLT(光线路终端)是无源光网络(PON)的核心局端设备,负责光/电信号转换、数据处理、带宽分配及用户管理。具有高带宽、低损耗、高安全性和易维护等技术特点,广泛应用于家庭、企业及公共机构宽带接入。未来将向更高性能、智能化方向发展,结合SDN/NFV等新技术,提升网络服务质量。

limengshi138392的博客 4358

javascript数据结构和算法 第一章(Javascript编程环境和模型) 一

这一章介绍了我们在这本书中使用的描述各种数据结构和算法的Javascript的编程环境和编程架构. Javascript 环境 Javascript 在很长一段时间都是被作为web浏览器内置脚本编程语言来使用. 然而,在过去几年里,javascript编程环境得到了极大的发展,他们可以使javascript在桌面或者服务端运行. 在我们这本书中,我们使用其中的一个javas

Vein Cook 961

FPGA实战:给你的UART串口通信加上Verilog奇偶校验位(Modelsim仿真验证)

本文详细介绍了如何在FPGA中实现UART串口通信的Verilog奇偶校验功能,包括发送端校验位生成和接收端校验检测的设计与实现。通过Modelsim仿真验证,确保数据传输的可靠性,适用于嵌入式系统和数字通信领域。

weixin_34216614的博客 341

手把手教你复现KDD 2024时空预测顶会论文:以UniST和ImputeFormer为例的代码实战与避坑指南

本文详细指导如何复现KDD 2024顶会论文中的UniST和ImputeFormer模型,涵盖环境配置、数据处理、模型训练及评估等关键步骤。通过实战案例和避坑指南,帮助研究者掌握时空预测与插补技术,提升在智慧城市、交通管理等领域的应用能力。

weixin_29204205的博客 279

5分钟快速入门JavaScript数据结构与算法的基础【①JavaScript数据结构与算法系列】

本文目录一、JavaScript的简介二、JavaScript的环境搭建三、JavaScript的基础(变量、常量、运算符、真假值)四、本章小结五、写在后面 一、JavaScript的简介 JavaScript是一门非常强大的编程语言。它也是最流行的编程语言之一,也是互联网上最卓越的语言之一。 在GitHub(世界上最大的代码托管站点)上,托管了 30w+ 的JavaScript代码仓库(用JavaScript开发的项目数量也是最多的,参看http://githut.info)。使用JavaScript的项

狼丶宇先森的网络科技空间 1874

YOLO11改进 | 卷积模块 | 轻量化GSConv替换普通的conv

yolo11,GSConv,卷积模块

kay_545 3955

JavaScript 数据结构和算法学习指南第四版(一)

欢迎来到 Packt 早期预览。在本书上市之前,我们为您提供独家预览。撰写一本书可能需要数月时间,但我们的作者今天可以分享一些前沿信息。早期预览通过提供章节草案,让您深入了解最新的发展。目前章节可能有些粗糙,但我们的作者会随着时间的推移进行更新。您可以随意翻阅这本书,或者从头到尾跟随阅读;早期预览旨在提供灵活性。我们希望您喜欢了解更多关于撰写 Packt 书籍的过程。第一章:介绍 JavaScript 中的数据结构和算法第二章:理解 Big O 表示法第三章:数组第四章:栈第五章:队列和双端队列第六章:链表

龙哥盟 1001

室内无线传播损耗分析与传播模型验证课程设计

室内无线传播损耗分析与传播模型验证课程设计

a_zxswer的博客 185

nvidia系列教程-AGX-Orin系统刷机及备份

NVIDIA AGX Orin 是一款高性能的嵌入式计算平台,专为边缘计算和 AI 应用而设计。为了确保系统的稳定性和适应不同的应用场景,用户可能需要对 AGX Orin 进行系统刷机和备份操作。本文将详细介绍如何完成这些操作,帮助您更好地管理和维护 AGX Orin 设备。通过以上步骤,您可以成功地为 NVIDIA AGX Orin 刷写系统并创建备份。这些操作不仅能帮助您保持系统的更新和安全,还能在遇到问题时快速恢复系统。

flypig has a dream! 3323

学习JavaScript数据结构和算法(部分一)

看了 Loiane Groner 著的《学习JavaScript数据结构与算法》一书,自己写篇博客对着敲敲代码: 全文包含十个部分,分别是:数组、栈、队列、链表、集合、字典与散列表、树、图、排序和搜索算法、算法补充知识。 面向对象编程 JavaScript里的对象就是普通名值对的集合。创建一个普通对象有两种方式。第一种方式是: var obj = new Object(); 第二种方...

qq_20901397的博客 2319

MATLAB - 激光雷达 - 相机联合标定(Lidar-Camera Calibration)

激光雷达传感器和相机通常在自动驾驶应用中结合使用,因为激光雷达传感器收集三维空间信息,而相机则以二维图像捕捉空间的外观和纹理。您可以融合来自这些传感器的数据来改进物体检测和分类。激光雷达-相机标定可以估算出一个变换矩阵,给出两个传感器之间的相对旋转和平移。在进行激光雷达-相机数据融合时,您可以使用该矩阵。本图说明了激光雷达和相机标定 (LCC) 过程的工作流程,我们使用棋盘格作为标定对象。我们从激光雷达和相机数据中提取棋盘角和平面,然后在它们的坐标系之间建立几何关系,进行标定。

机器人控制与仿真应用 7370

javascript数据结构与算法

数据结构:数据的组织形式,如数组、链表、树、图等,用于高效存储和访问数据 算法:解决问题的步骤,是指令的有限序列,其中每条指令表示一个或多个操作。它具备有穷性(有限步骤内完成)、确定性(每一步都有确切含义)、可行性(能通过有限次操作实现)等基本特性 数据结构为算法提供了操作的对象和基础,而算法则通过操作这些数据结构中的数据来实现特定的功能和性能要求

Hi_MrXiao的博客 1284

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

为什么要学习数据结构与算法javascript描述

在过去的几年中,得益于Node.js和SpiderMonkey这样的平台,JavaScript越来越多地被用于服务器端编程。鉴于JavaScript语言已经走出了浏览器,程序员发现他们需要更多传统语言,比如C++和Java提供的工具。这些工具包括经典的数据结构,如链表、栈、队列、图等,也包括经典的排序和查找算法。本书即讨论了在使用JavaScript进行服务器端编程时,如何实现这些经典的数据结构和

多多 2594

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

javascript数据结构和算法 一(本书组织结构)

环境 我们在本书中使用的Javascript编程环境是基于SpiderMonkey 引擎的javascript shell. 第一章讲述了在你的环境中下载 shell的介绍. 其他的shell例如Nodejs同样可以工作,虽然你可能需要简单的改变下代码. 除了shell,唯一你要准备的就是文本编辑器.   本书的组织结构 第一章:javascript语言的概览,至少是

Vein Cook 1582

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

js视角的数据结构和算法(一)

js视角的数据结构和算法(一)

冷月心的博客 2319

【经典再现】JavaScript 中的算法与数据结构 —— algorithms.js

【经典再现】JavaScript 中的算法与数据结构 —— algorithms.js 项目基础介绍 algorithms.js 是一个遵循 Atwood定律 的开源项目,专为那些希望通过JavaScript体验计算机科学基础的开发者而生。本项目由Felipe Nievem在GitHub上维护,它集合了众多经典的算法和数据结构实现,旨在让前端开发者也能深入理解并运用这些强大的理论工具。项目采用Ja...

gitblog_00855的博客 841

前端学习总结(二十二)——常见数据结构与算法javascript实现

写在前面作为前端开发者而言,可能不会像后端开发那样遇到很多的算法和数据结构问题,但是不论是做前端、 服务端还是客户端, 任何一个程序员都会开始面对更加复杂的问题, 这个时候算法和数据结构知识就变得不可或缺,它是编程能力中很重要的一部分。如今的前端技术发展飞快,再也不像以前那样只负责视图层了,更多的交互和数据逻辑需要前端来做,这个时候对于算法和数据结构就有着更高的要求。此外,前端还可以去做node端,

浩时代的博客 3万+

JavaScript版数据结构与算法——基础篇(一)

文章首发在我的个人博客:http://www.brandhuang.com/article/1575117792236 这是之前学习记录的一篇文章,最近准备面试复习一下,内容做了些修修补补,如有错误欢迎指出 本文来自于学习 《JavaScript数据结构与算法(第3版)》 以及网路资料,如有不对请指正。 作为软件开发工作者,可能你听过这么一句话:程序 = 数据结构 + 算法。可见数据结构和算法在我们的编码工作中是非常的重要的。如果我们使用了不恰当的数据结构或者算法,可能会影响我们程序的性能。总之,对于算

重庆崽儿Brand 3686

Learn Harness Engineering 第 09 讲:为什么 Agent 会过早宣布胜利——用三层终止验证与独立审查构建可信的完成判定

> 本讲围绕 Harness Engineering 的核心故障模式"过早胜利宣言(premature victory declaration)"展开:当 AI 编程 Agent 告诉你"任务完成了"时,它很可能只是"感觉"完成了。本文从置信度校准偏差的根源出发,给出可落地的三层终止验证、完成判定外部化、运行时信号采集与"红笔批注"式错误反馈等一整套反制机制,并结合本仓库 Lecture 09 的

gitblog_00809的博客 1057
上一篇: javascript数据结构和算法 第一章(Javascript编程环境和模型) 一
下一篇: javascript数据结构和算法 第一章(编程体验)二
jjvein
博客等级 码龄14年 29粉丝 59原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值