前端学习第八天——javascript判断语句和数组
if语句
if语句是最简单的条件语句,也称选择语句。
if (condition)
{
当条件为 true 时执行的代码
}
else
{
当条件不为 true 时执行的代码
}
switch语句
switch(表达式) {
case n:
代码块
break;
case n:
代码块
break;
default:
默认代码块
}
break
跳出循环,不书写break
则后面的所哦呦case
都将被视为匹配,知道预见break
。
三元运算符
条件表达式 ? 表达式1 : 表达式2
问号前面是判断的条件,问好后面用冒号隔开两个表达式。当条件为真时调用表达式1,为假时调用表达式2。
for语句
for (语句 1; 语句 2; 语句 3) {
要执行的代码块
}
语句 1 在循环(代码块)开始之前执行。
语句 2 定义运行循环(代码块)的条件。
语句 3 会在循环(代码块)每次被执行后执行。
while语句
while (条件) {
要执行的代码块
}
break
表示立即终止循环
continue
用于跳过循环中的一个迭代,并继续执行下一个迭代。
do while语句
该循环会在检查条件是否为真之前执行一次代码块,然后如果条件为真的话,就会重复这个循环
do
{
需要执行的代码
}
while (条件);
生成[a,b]之间的随机数
Math.random()*(a-b+1)+a
算法
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。
穷举法
寻找100以内的质数
// 穷举法
outer: for (var i = 2; i <= 100; i++) {
// 内层循环开始从2开始到小于这个数字的每一个数字都尝试除i,如果能够整除,说明它不是质数,就可以筛选下一个数字了
for (var j = 2; j < i; j++) {
if (i % j == 0) {
// 说明数字i不是质数,因为它找到了除1和它自身之外的约数了,测试下一个数字了
// continue表示放弃这个数字,开始迭代下个数字,continue它负责的是它所在的最内层的for循环
// 要给外层for循环加上label,然后在continue的后面加上这个label,
// 这样就表示立即开始迭代外层for循环的下一个数字了,而不是内层for循环
continue outer;
}
}
// 能够遇见这条语句的数字i,一定是质数,否则就被continue略过了
console.log(i);
}
面试题
用莱布尼兹级数估算圆周率
π = 2 * (1+1/3+(12/35) + (1*…n)/(3* 5* …2n+1))
var sum = 0;
var item = 1;
var n = Number(prompt('请输入一个数'));
for(var i=1; i<=n; i++)
{
item *= i/(2 * i+1);
sum +=item;
}
console.log((1+sum)*2);
数组
数组(Array)用来存储一组相关的值,从而方便求和、计算平均数、逐项遍历等操作。
数组的定义
- 方法一
var arr = ['A','B','C','D'];
- 方法二
var arr = new Array('A','B','C','D');
- 方法三
定义一个长度为4的数组,但是这4项都是undefined
var arr = new Array(4);
访问数组项
数组的每一项都有下标,下标从0开始
arr[0]; // 数组的第一项
JavaScript规定,访问数组中不存在的项会返回undefined,不会报错
数组的长度
数组的length
属性表示它的长度
arr.length; // 数组的长度
更改数组项
如果更改的数组项超过了length-1,则会创造这项,
var arr = [2,6,7,3];
arr[6] = 4;
console.log(arr);
// (7)[2,6,7,3emptyx2,4]
数组类型的检测
- 数组用
typeof
检测结果是object
Array.isArray()
方法可以用来检测数组
数组的头尾操作
方法 | 功能 |
---|---|
push() | 在尾部插入新项 |
pop() | 在尾部删除 |
unshift() | 在头部插入新项 |
shift() | 在头部删除 |
push()
方法用来在数组末尾插入新项,传入的参数就是要插入的新项。
插入多项时,可以用逗号隔开每项。
调用push()
方法,数组会立即改变,不需要赋值pop()
方法删除数组中的最后一项,删除后会返回被删除的项。unshift()
方法用来在数组头部插入新项,传入的参数就是要插入的新项。
插入多项时,可以用逗号隔开每项。
调用unshift()
方法,数组会立即改变,不需要赋值shift()
方法用来删除数组的第一项,也就是数组下标为0的项,删除后会返回被删除的项。splice()
方法用于替换数组中指定的项
var arr = ['A','B','C','D','E','F','G'];
// 从下标为3的项开始,连续替换2两项
arr.splice(3,2,'X','Y','Z');
console.log(arr); // ['A','B','C','X','Y','Z','F','G']
还可以用于在指定位置插入新项
var arr = ['A','B','C','D'];
// 从下标为3的项开始,连续替换2两项
arr.splice(2,0,'X','Y','Z');
console.log(arr); // ['A','B','X','Y','Z','C','D']
还可以用于删除指定项
var arr = ['A','B','C','D','E','F','G'];
// 没有设置替换的新项,仅删除4项
arr.splice(2,4);
console.log(arr); // ['A','B','G']
splice()
方法会以数组的形式返回被删除的项
-
slice()
方法用于得到子数组。
slice(a,b)
截取的子数组从下标为a的项开始,到下标为b(不包括下标为b的项)结束。该方法不会更改原有数组
slice()
方法如果不提供第二个参数,则表示从指定项开始,提取所有后续所有项作为子数组。
slice()
方法的参数允许为负数,表示数组的倒数第几项 -
join()
方法可以使数组转为字符串;字符串的split()
方法可以使字符串转为数组。
join()
的参数表示以什么字符作为连接符,如果留空则默认以如同调用 以逗号分隔 toString()方法
split()
的参数表示以什么字符拆分字符串,一般不能留空 -
字符串也可以使用方括号内写下标的形式,访问某个字符,等价于方法 charAt()
-
字符串的一些算法问题有时候会转换为数组解决
-
concat()
方法可以合并连结多个数组,不会改变原数组
var arr1 = [ 1, 2, 3, 4];
var arr2 = [ 5, 6, 7, 8];
var arr3 = [ 9, 10, 11];
var arr = arr1.concat(arr2, arr3);
console.log(arr);
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
reverse()
方法用来讲一个数组中的全部项顺序置反indexOf()
方法的功能是搜索数组中的元素,并返回它所 在的位置,如果元素不存在,则返回-1includes()
方法的功能是判断一个数组是否包含一个指定 的值,返回布尔值