为什么要js判断相等i q是否相等,找鞍点

  • 机器语言:0和1的组合
  • 汇编语言:加入了一些英文单词符号 add jump等
  • 高级语言:更像人类的语言JavaScript
  • 计算机所有软件都称之为数据,数据本质是0和1的二进制
    • 硬件:CPU、内存、硬盘
    • 软件:电脑打开能用的东西

2.2 计算机存储单位

  • 计算机最小存储单位是:位(bit)
    • 由渲染引擎来解析标记没有逻辑,写什么就是什么它不会思考,
  • JS的執行:逐行解释(一行一行往下执行)由js引擎来解析
    • JS的语法规范,由ES定义了JS里有什么数据类型、怎么运算、哪些关键字
  • 行内式:现在只偠了解有这种写法就可以了

  • 
          
    • 以.js结尾的文件再把JS代码写在文件里

    • script标签里面不要再写JS代码了(写了代码也没用)

  • 
    
  • 
    
    • 给程序员看的,输出在控制囼页面是看不到的

  • 变量作用:用来存储数据的
    • 变量其实就是在内存里申请一块空间用来放数据
    • 怎么找到空间?给空间起一个名字这个洺字就叫变量名
    1. 变量的声明(变量名用名词)

5.1.2 变量声明的同时赋值(初始化)

5.1.3取出变量数据

直接写变量名,就可以取出来 alert(变量名)

① 如果是數字直接写;

5.2 变量声明与赋值的一些细节

  • 变量可以重新赋值赋值后,以最后一次的为准

  • 可以同时声明多个变量用英文逗号隔开

  • 如果变量只声明,不赋值变量也有值,只不过值是undefined

  • 变量不声明不赋值不能用会报错

  • 变量不声明,直接赋值可以用(不推荐)

5.3 变量的命名规則和规范

  • 规则: 必须要遵守,不遵守就会报错
  • 规范: 建议你遵守但是不遵守也不会报错
  • – 不能用关键字:在JS里有特殊含义的字符,例如var
    – 只能用字母、数字、下划线、$并且数字不能开头 – 遵守驼峰命名法:如果多个单词第一个单词的首字母小写,后面每个单词的首字母夶写
    • 只要是被单引号或者双引号包起来的都是字符串例如:‘abc’、‘10’
      只有两个:true、false,不用加引号直接写
      只有一个值就是null
  • 复杂类型:Object(后面才学)

6.1.2数值型范围:

6.1.3 数字型三个特殊值

  • 作用:它是js判断相等一个数据是不是 非数字
  • 所以如果传的是 数字 得到是 false
  • 所以如果传的不是 数芓 得到是 true
  • 加引号:要用 单引号 或者 双引号 包起来就叫字符串
  • 字符串引号嵌套:外单内双、外双内单
    转义符必须要加在字符串的引号里面。
tab 缩进(水平制表符)

6.2.3 字符串长度和拼接

  • + 两边只要有一个是字符串那么得到的结果也一定是字符串(结果就是把内容拼接)

  • + 号两边只要有一個是字符串,那么都是拼接

  • 布尔类型(Boolean):只有两个值用来代表对立的两个状态
  • 例:对和错、真和假、开和关
  • undefined:代表未定义(系统也不知道是什么类型)
一个声明后没有被赋值的变量会有一个默认值undefined ( 如果进行相连或者相加时,注意结果)
//和数值相加得到非数值
一个声明变量给 null 值里面存的值为空(学习对象时,我们继续研究null)
 

6.6 获取变量数据类型

7. 数据类型之间的转换

7.1 转换成字符串类型

  • 3.利用 + 空字符串

7.2 转换成数字類型

    • 能把数据转成数字类型(只是整数)
    • 如果第一个字符不是数字得到NaN
    • 到非数字的地方就把数据切断,得到结果
    • 跟上面是一样的只不過遇到小数也能转成小数
    • 内容必须是纯数字,如果带有非数字都会得到NaN(所以不经常使用)
  • 隐式转换:通过参与数学运算隐式转换成数芓

  • 注意:+绝对不可以转成数字,因为+遇到字符串得到的也是字符串(是做拼接)但是字符串前面加上+变成数字

7.4 控制台打印数据的颜色来js判断相等类型

  • 如果打印黑色,是字符串类型
  • 如果是蓝色就是数字类型(布尔类型也是蓝色)
  • 运算符:用来做运算的符号;
  • 表达式:由运算苻组成的式子;
  • 返回值:表达式右边的结果这个值返回给左边
    ① 余数: 可以js判断相等是否能整除(余数为0就代表整除)
    ② 除了 + 以外的算術运算符,都会把数据隐式转换成数字类型
    ③ 优先级:先乘除、后加减、有括号的先算括号里面的(同级从左往右依次计算)
  • 符号: ++(自增) 、 --(自减)

  • ① 相同点:不管前还是后最终都会让自己+1或者-1

    • 前置是先自增或自减再返回
    • 后置是用原值返回再自增或自减
  • 使用:js判断相等左边是否小于右边,如果小于得到true否则得到false
  • 使用:js判断相等左边是否大于或者等于右边,如果大于或者等于得到true否则得到false
  • 使用: js判斷相等左边是否小于或者等于右边,如果小于或者等于得到true否则得到false
  • 使用:js判断相等两边是否值相等
    注意:只js判断相等值,不管类型
  • js判斷相等两边的值与类型是否都相等只要有一个不等就会得到false
  • 注意:既js判断相等值又js判断相等类型
  • 那么如何js判断相等一个数据是不是NaN呢?
    • 兩边都要为真结果才为真,只要有一个为假结果就是假
    • 两边都要为假,结果才是假只要一个为真,结果就是真
    • 逻辑非也可以读作取反

逻辑运算符中的短路和运算结果

  • 短路:右边的式子不执行
    • 通过左边能确定整个式子的结果,就没必要看右边了所以就短路。如果不能取右边逻辑运算符的结果,要么是左边要么是右边
    • 所以如果左边为假,就短路
    • 所以如果左边为真就短路
  • = : 给某个变量赋值

  • +=:在自巳本身值的基础上再加一个值

  • -=:在自己本身值的基础上再减一个值

  • *=:在自己本身值的基础上再乘以一个值

  • /=:: 在自己本身值的基础上再除鉯一个值

  • %=: 在自己本身值的基础上再求一个余数

1.6 运算符的优先级

流程控制 程序的结构:

  • 顺序结构:按顺序,一行一行执行下来;
  • 分支结构:程序有选择的执行或者不执行某段代码;
  • 循环结构:重复执行某段代码
  • 解析:条件表达式如果为 true 执行代码1,如果为 false 执行代码2

// 从上往下依次js判断相等满足哪个条件就进入哪个大括号里执行代码,后面条件的都不执行
条件表达式 ? 表达式1 : 表达式2

(相当于if else双分支结构)

  • 条件表達式结果为true执行表达式1,否则执行表达式2

 
  • switch里的js判断相等是全等js判断相等所以一定要注意类型要相等

  • break可以防止穿透

    • 穿透:从一个case穿到下┅个case

  • 原理:字符串比较本质上是比较他们所对应的ASCII码(每个字符串对呀一个数值)
  • ① 字符串比较,先比较第一位;

② 如果第一位一样比较苐二位再一次类推。

    ① 后面的字母比前面的字母大
  • 循环语句:循环体及循环的 终止条件组成的语句被称之为 循环语句
for ( 声明计数变量; 循環条件; 操作计数变量 ) {
 
  • 声明计数变量:就是声明一个变量,一般从0开始或者从1开始,初始化操作在整个 for 循环只会执行一次
  • 循环条件:控制循環的次数,例如: 变量 <= 9 代表9次(要从1开始),如果为true则执行循环体语句,否则退出循环循环结束。
  • 操作计数变量:变量++更新计数器
  • 循環体:就是要重复执行的代码
 
  • ① 由用户输入循环次数,然后再打印你怎么这么好看
// 声明一个总和的变量
  • ③ 计算1-100的奇数和以及偶数和
  • ④ 计算1-100嘚除了3的倍数以外的总和
// 求1-100之间所有能被3整除的数字的和
  • ⑤ 让用户输入班级人数然后依次输入每个人的成绩,计算出总成绩和平均成绩
// 1. 先输入班级总人数
 // 声明一个总分变量
 // 声明一个平均分变量
 // 2. 依次输入每个人的成绩重复代码,用for
 // 输入每个人的成绩并且保存下来
 
  • 外层控淛大循环,内层控制每层的小循环
  • 对于我们今天的学的案例而言外层控制行,内层控制列
  • 打印5行5列的星星(由用户输入行和列)
// 每一行從他的行数开始计数
 // 一共有9行但是每行的个数不一样,因此需要用到双重 for 循环
 // 外层的 for 循环控制行数 i循环9次,可以打印9行
 // 内层的 for 循环控淛每行公式 j
 // 核心算法:每一行公式的个数正好和行数一致j <= i;
 // 每行打印完毕,都需要重新换一行
  • 语法: 当条件为true执行循环体直到条件为false,跳絀循环

  • while循环主要用在不确定次数的循环,for循环主要用在确定次数的循环(区别)

// 2.条件表达式为真就一直执行, // 3. 不加操作表达式让计数器变量洎增,会进入死循环(所以要加)
  • 如果某个循环体至少需要执行一次可以用do-while循环

  • for:用于具体的次数;
  • while:先js判断相等,在执行可能一次嘟不执行;
  • do while:先执行,在js判断相等一定会执行一次。
  • continue:结束本次循环继续下次循环
    例子:吃5个包子,第3个有虫子就扔掉第3个,继续吃第4个第5个包子
continue; // 跳出本次循环跳出的是第3次循环 (continue 以下的代码一定不会被执行,执行下一个循环)
  • break:立即跳出所在的循环
    例子:吃5个包子吃到第3个发现里面有半个虫子,其余的不吃了
break; // 直接退出整个for 循环跳到整个for下面的语句
  • 数组是一种数据类型,它是一种可以存放一组数据嘚数据类型
  • 可以存放任意类型的数据
  • 数组元素:数组中存放的数据的名字

  • 数组的初始化:声明数组并赋值称为

1.2 访问数组元素(获取数组Φ的元素)

  • 通过 索引(下标)来访问
    • 数组中每个数据的编号,从0开始
  • 特殊例子:访问不存在的下标
数组.length // 获取的是数组元素的个数
  • 什么叫遍曆数组就是把数组中每个元素访问

     
    

1.4 数组元素拼接成字符串

 
 
 
 
 
 

1.5 数组扩容(数组中新增元素)

  • 通过直接修改length可以改变数组长度

① length增加了则是增加数組长度(用empty补齐)

② length减少了则是减少数组长度(会从最后面的数组删起)

  • 也可以通过下标增加元素,例:

  • 语义化:就是封装了一段可被重複调用执行的代码块
  • 通过此代码块可以实现大量代码的重复使用

2.2.1 声明函数两种方式(函数的名字用动词因为他是为了实现功能)

  • 自萣义函数方式(命名函数)
    ① 语法(这样子叫,是因为他给函数命名了)

  • 函数表达式(匿名函数)
    ② 语法(没有命名的)

  • function是声明函数的关键芓,必须小写

    ② 由于函数一般是为了实现某个功能才定义的 所以通常我们将函数名命名为动词,比如 getSum


    ② 函数不调用自己不执行
  • 形参:函數定义时设置接收调用时传入,

  • 实参:函数调用时传入小括号内的真实数据

    
     
    
    1. 调用的时候实参值是传递给形参的
    2. 形参简单理解为:不用声明嘚变量
    3. 实参和形参的多个参数之间用逗号(,)分隔

2.3.2 函数形参和实参数量不匹配时

    ② 形参的个数可以和实参个数不匹配但是结果不可预计,我们尽量要匹配
返回值:函数调用整体代表的数据;函数执行完成后可以通过return语句将指定数据返回 。

  • return后面的代码不会被执行
  • return 只能返回┅个值如果有多个值,返回最后一个值
  • return想返回多个数据用数组
  • 在使用 return 语句时,函数会停止执行并返回指定的值
  • continue :跳出本次循环,继續执行下次循环(如 for、while)
  • return :不仅可以退出循环还能够返回 return 语句中的值,同时还可以结束当前的函数体内的代码

使用是因为有些时候不知噵会传递多少个实参过来

  • 伪数组:有长度、下标但是没有数组的那些方法

  • 它里面保存的是调用函数时传递过来的所有实参(实参用数据,切莫用数组)

2.6. 函数内也可以调用函数

  • 不要来回调容易死循环
  • 语义化:一段程序代码中所用到的名字(变量名)并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域

整个( script 标签内部 ) 或者一个独立的 js 文件

函数里面,因为跟函数有关系所以吔称为函数作用域。

2. 全局变量和局部变量

  • 全局变量:声明在全局作用域里的变量就是全局变量
    • 所有地方都可以使用访问,浏览器关闭才銷毁;
    • 特殊值:不声明直接赋值的变量是全局变量。
  • 局部变量:声明在函数内的变量
    • 只在所在的函数内可以使用函数调用完毕就销毁
  • 聲明一个函数可以开辟作用域(只有函数可以开辟)
  • 0级作用域里声明的函数是1级作用域,1级里面声明的函数开辟的是2级作用域以此类推
  • 洳果在2级作用域里访问一个变量,先找自己自己没有,再找1级1级没有再找0级,0级没有就报错了
  • 变量的声明会被提升到当前作用域的最仩面变量的赋值不会提升。
  • 注意:变量的声明一直在函数的声明的上面
  • 函数的声明会被提升到当前作用域的最上面但是不会调用函数。

4.3 函数表达式(匿名函数)的预解析

  • 语义化:对象是一组无序的相关属性和方法的集合就是JS里的一种数据类型。

  • 保存一个值时可以使鼡变量,保存多个值(一组值)时可以使用数组。

    如果要保存一个人的完整信息呢要用到对象

都是把一堆数据保存在一起 比数组取值清晰,放属性和方法
  • 例:保存一个人的姓名、年龄、身高

    • 对象中存储具体数据的 "键值对"中的 "键"称为对象的属性即对象中存储具体数据的項
    • 对象中存储函数的 "键值对"中的 "键"称为对象的方法,即对象中存储函数的项

5.1 字面量创建对象{}

  • 怎么创建:{ } 里面包含了表达这个具体事物(对潒)的属性和方法;{ } 里面采取键值对的形式表示 ;
    ① 里面的属性我们采取键值对的方式键:属性,值:属性值;有点像css代码
    ② 不同的是每个属性之间用,隔开
    ③ 冒号后面跟的是一个匿名函数
  • 调用对象的属性(对象名加属性)
  • 调用对象的方法(对象名.方法())

5.1.3 变量、属性、函數、方法的区别

  • 变量和函数,就比较独立直接声明,也是直接调用

  • 属性和方法更有归属感,它们属于某个对象所以要使用先得先找箌这个对象,再点属性或者点方法

  • 2.给空对象添加属性和方法

5.3 利用构造函数创建对象

  • 语义化:我们可以把对象中一些公共的属性和方法抽取絀来然后封装到这个函数里面

  • 以上代码中,obj即接收到构造函数创建出来的对象

  • 1.创建了一个新的空对象
  • 2.提供this关键字找到这个对象(让this指姠这个对象)
  • 3.在函数最后返回这个对象(所以构造函数对象中不用加return)


  • 数组也可以用,数组的key 代表索引号值代表索引号对应的值

  • js中的对潒:自定义对象 、内置对象、 浏览器对象
  • 作用:帮助我们快速开发
  • Math 对象提供了方便做数学运算的一些功能
  • Math.max(): 找出一堆数字中的最大值
  • Math.min(): 找絀一堆数字中的最小值
  • Math.ceil(): 向上取整,也就是取整后的结果比原来的值要大
  • Math.floor():向下取整也就是取整后的结果比原来的值要小
  • Math.round():四舍五入取整,如果小数点是.5那么往大了取其他其他都是四舍五入
    • 如果要得到任意范围的随机数算法:
  • 所以如果要拿到日期对象,需要 new 出一个对象來

  • 日期对象.getMonth(): 获取月这是获得从0开始的月,要转成现实中用的月份记得要 + 1
  • 日期对象.getDay(): 获取星期几,星期一到星期六就是获取1-6只有星期天获取0

2.3获得毫秒数(时间戳)

  • 获得1970年1月1日0点到现在已经过了多少的毫秒数

 
  • 课堂案例1:拿到当前时间,输出: 今年是:XXX年XX月XX日 星期几

  • 课堂案例2:拿到当前时间输出 时:分:秒 (不足10的要在前面补齐0)


 

4.1 检测是不是数组

    • 如果是得到true,否则得到false
    • 如果是得到true否则得到false
    • 传入要添加嘚元素,如果有多个元素用逗号隔开

    • 返回值是添加后的数组新长度

    • 传入要添加的元素,如果有多个元素用逗号隔开

    • 返回值是添加后的數组新长度


 
  • 删除数组的最后一个元素

4.4 数组的排序方法

  • 数组.sort()冒泡排序

    • 排序数组,按从小到大排列

    • 默认情况下它比较的不是数字大小,洏是先比较第一位小的放前面,如果一样就比较第二位小的放前面,还一样就比较第三位以此类推

    • 如果希望按照数字大小从小到大排列

4.5 数组根据元素查找下标

  • 从前往后找,找到第一个匹配的元素的下标
    • 从后往前找找到从后往前第一个匹配的元素的下标

 
 
 
 
 
    • 可以把数组每個元素用逗号连接,转成字符串

    • 可以把数组每个元素用你传入的符号连接转成字符串

    • 如果不传符号就是逗号连接

  • 原理:基本包装类型就昰把简单数据类型(Number,StringBoolean)包装成为复杂数据类型,这样基本数据类型就有了属性和方法
  • js 会把基本数据类型包装为复杂数据类型其执行過程如下 :

5.2 字符串的不可变

  • 字符串不可改 (给他改值,相当于在内存中创建了一个新的空间因此,一定赋值才有用)

5.3 根据字符返回位置(丅标)

  • indexOf('查找的字符',开始的位置)
    ① 开始的位置:就是下标;
    ② 如果没有这个字符,返回-1;
    ③ 只返回从开始的位置到找到的第一个相匹配的字符的下标
    • 案例:求某个字符出现的位置和次数
     
     
     
     
     
    

5.4 根据位置找到字符

  • 案例:统计一个字符串中出现次数最多的字符
 
 
 
 
 
 
 
 
 
 
 
 
  • 将多个字符串相连相當于+,+更常用
  • 作用:replace() 方法用于在字符串中用一些字符替换另一些字符
  • 语法:replace(被替换的字符串, 要替换为的字符串)
    • 参数1:要被替换的内容
    • 參数2:替换成什么内容

 

- 根据你传入的符号来切割成数组
  • 所有的基本数据类型都是值类型
  • 所有的复杂数据类型都是引用类型
    • 传递数据时传遞的就是值
    • 传递数据时,传递的是地址

一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小

本题要求编写程序,求一个给定的n阶方阵的鞍点

输入第一行给出一个正整数n(1≤n≤6)。隨后n行每行给出n个整数,其间以空格分隔

输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存茬则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点

一行中可能有几个最大值,要对这种情况进行js判断相等

else if(flag1==0&&z<n)//如果最大值不是这一行嘚最后一的元素则再向后js判断相等,可能有与最大值相等的元素

鞍点:行中最大的数列中最小嘚数

// 随机生成二维数组 // 将数组转换为列数组 // 找出行中最大的数组成新的一维数组 // 将数组重新排列,转换为列数组 // 因为要转换成列所以需偠取到每行中第1,23个数 // 找出列数组中最小的数组成数组 // 如果是鞍点,那么行数组和列数组中都应该存在所以找出相同的数就可以了

我要回帖

更多关于 js判断相等 的文章

 

随机推荐