javascript(网页脚本语言),简称JS,文件以 .exe明名,在代码中写在script标签中。给网页添加功能,交互的行为。
外链 <script src="xx.js">
1. alert 弹出输入框 2. prompt 弹出输入框 3. console.log 打印日志 4. document.write 在页面中输出(在文档中写内容)
变量
变量的初始化:声明一个变量并赋值,称之为初始化。
同时声明多个变量,多个变量以逗号隔开,最后以分号结尾。 只声明变量不赋值,输出结果为underfined;不声明不赋值直接使用,会报错,后面代码不执行。
数据类型
String 字符串型 ; number 数字型 ;Boolean 布尔型 ;null 空值 ;undefined 未定义的 ;object 对象 ;NaN (not a number) 检查数据类型用typeof运算符 ;ture代表 1 ;false代表 0;
字符串型 String
1. toString( ) 转换为支付串 ( 不可以转换 null undefined (会报错)); 2. String( ) 强制转换为字符串; 3. 加号(+)拼接支付串 只要和字符串拼接的结果都是字符串。
数字型 number
NaN是数字型,但不是一个数字 1. parseInt( )函数 转换成整数数值型 2. parseFloat( )函数 转成浮点数数值型 3. number( )强制转换函数 转换成数值型
布尔型 Boolean
数字0会转换为false,null会转换为false,undefined会转换为false,NaN会转换为false,' ' " "都会转换为false,有空格的字符串会转换为true,其他都会转换为true。 隐式转为布尔值的方法 if ( ); var bool=!!'sss';
运算符(操作符)
算术运算符
+(加) -(减) *(乘) %(除(取余))
递增运算符
++num(前置递增) num++(后置递增) --num(前置递减) num--(后置递减) 口诀:前置先自加一(减一),后返回值 后置先自加一(减一),后返回值 一般使用后置,代码独占一行
比较运算符
<(小于号) >(大于号) >=(大于等于号) <=(小于等于号) ==(等于号) !=(不等号) ===(全等于) !==(全不等) =(赋值)
赋值运算符
概念:用来把数据赋值给变量的运算符 作用:将等号右边结果赋值给等号左边的变量
= 直接赋值 +=,-= 加,减一个数然后再赋值 *=,/=,%= 乘,除,取模然后再赋值
逻辑运算符
&& "逻辑与"简称"and",两侧都为真,结果才为真;一侧为假,都是假。 || "逻辑或"简称"or",两侧只要有一个为真,就是真;两侧都是假,结果才是假。 ! 逻辑非 取反 逻辑中断:在多个表达式中,左边的表达式可以确定结果时,就不再继续运算右边的表达式。
if else语句 ( 双分支语句)
条件成立 执行if里面的代码,否则执行else里面的代码。 if(条件表达式){ //(如果)条件成立,执行的代码 }else{ //(否则)执行的代码 } 总结:双分支语句if else之中只能有一个语句执行;双分支语句是多选一的过程。
多分支语句
多分支语句也是多选一的过程,最后只能执行一个语句 else if 理论上可以是任意多个 else if 中间必须空一格
三元(目)运算符
语法构:条件?表达式1:表达式2; 执行思路:如果条件结果为真,则返回表达式1的值;如果条件为假,则返回表达式2的值;
循环
for循环
for循环:重复执行某些代码若干次 for循环语法结构: for (初始化变量; 条件表达式; 操作表达式) { 循环体 } 初始化变量:就是用var声明一个普通变量,通常用于作为计算器使用, 条件表达式:就是用来决定每一次循环是否继续执行,就是终止循环的条件, 操作表达式:就是每次循环最后执行的代码,经常用于计算器变量进行更新(递增或递减)
断点调试
断点调试:我们可以通过给程序打断点的方式,观察这个程序的执行过程, 通过这个断点来观察程序的运行过程 source 来源 设置断点:1.在行号上点一下, 2.刷新浏览器 取消断点:1.在行号上点一下 2.刷新浏览器 浏览器按F12 --> source ---> 找到要调试的文件 ----> 在程序的某一行设置断点 WATCH :监视,通过watch可以监视变量的值得变化,非常好用 F11 :程序单步执行,让程序一行一行的执行,
打印n行n列的星星
var rows = prompt('请输入你的行数:');
var cols = prompt('请输入你的列数:');
var str = '';
for (var i = 1; i <= rows; i++) {
for (var j = 1; j <= cols; j++) {
str = str + '★' + '\t';
}
str = str + '\n';
}
console.log(str);
//外层for循环控制行数,内层for循环控制列数。
打印99乘法表
1.一共9行,但是每行的个数不一样,因此需要用到双重for循环 2.外层的for循环控制行数i 循环9次 可以打印9行 3.内层的for循环控制每行的公式j 4.核心算法:每一行公司的个数正好和行数一致 j<=i 5.每行打印完毕,都需要重新换一行
var str = '';
for (var i = 1; i <= 9; i++) {
for (var j = 1; j <= i; j++) {
str += j + '×' + i + '=' + j * i + '\t' + '\t';
//str=str+j + '×' + i + '=' + j * i + '\t' + '\t'
}
str += '\n';
}
console.log(str);
while循环
-
while循环:第二种循环语句,可以在条件表达式为真的情况下,循环执行一定的代码,直到表达式不为真的时候结束循环
-
语法结构 while 当.......的时候,就是当条件表达式为真的时候,就执行里面的代码
while(条件表达式){
循环语句
}
1到100之间的数字的和
var sum = 0;
for (var i = 1; i <= 100; i++) {
sum += i;
}
console.log(sum);
1求1到100之间所有数字的平均值
var average = 0;
var sum = 0;
for (var i = 1; i <= 100; i++) {
sum += i;
}
console.log('1到100之间数字的和为:' + sum);
average = sum
console.log('1到100之间数字的平均数为:' + average);
求1到100之间奇数的和与偶数的和
var even = 0;
var odd = 0;
for (var i = 1; i <= 100; i++) {
if (i % 2 == 0) {
even = even + i;
} else {
odd = odd + i;
}
}
console.log('1到100之间所有的偶数的和为:' + even);
console.log('1到100之间所有的奇数的和为:' + odd);
数组
-
1.什么是遍历数组 :就是把我们的数组从头到尾访问一次,称为遍历
-
2.通过什么来遍历数组里面的元素:for循环可以实现这个效果
-
3.for里面的i是什么,当什么使用?for里面的数组元素怎么写: for里面的i是计算器,当做索引号使用,arr[i]是数组元素第i个数组元素
-
4.怎么获取数组的长度:length
-
5.数组索引号和数组的长度的关系:没有关系,数组索引号是从0开始的,数组的长度就是你有多少个元素
数组求和和平均值
var arr = [2, 6, 1, 7, 4];
var sum = 0;
var average = 0;
for (var i = 0; i < arr.length; i++) {
sum += arr[i];
}
console.log(sum);
average = sum / arr.length;
console.log(average);
遍历数组中的最大值
var arr = [2, 6, 1, 77, 52, 25, 7, 102, 89, 98, 253];
var max = arr[0];
for (var i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
console.log('这个数组的最大值就是:' + max);
遍历数组中的最小值
var arr = [20, 61, 11, 17, 42, 5, 1, -4, 75, -10];
var min = arr[0];
for (var i = 0; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
console.log('这个数组的最小值就是:' + min);
将数组转化为字符串
var arr = ['关羽', '张飞', '刘备', '诸葛亮'];
var str = '';
var sep = '/';
for (var i = 0; i < arr.length; i++) {
str += arr[i] + sep;
}
console.log(str);
新增数组元素
//1.新增数组元素 通过修改length长度 增加空元素
var arr = ['关羽', '张飞', '刘备', '诸葛亮'];
console.log(arr.length); //4
arr.length = 7; //把我的数组长度改为7,里面应该有7个数组元素 本来就4个,强制改成7,就会在原来基础上加上3个空元素
console.log(arr); //['关羽', '张飞', '刘备', '诸葛亮','empty','empty','empty'];
console.log(arr[4]); //新增的空元素只是声明了,没有给赋值,所以就是undefined
console.log(arr[5]); //新增的空元素只是声明了,没有给赋值,所以就是undefined
console.log(arr[6]); //新增的空元素只是声明了,没有给赋值,所以就是undefined
//2.新增数组元素 通过修改索引号 追加数组元素 增加或者替换实体元素
var arr1 = ['关羽', '张飞', '刘备', '诸葛亮'];
console.log(arr1); //['关羽', '张飞', '刘备', '诸葛亮']
arr1[4] = '赵云';
console.log(arr1); //索引号没出现的叫做追加元素/['关羽', '张飞', '刘备', '诸葛亮','赵云']
arr1[5] = '马超';
console.log(arr1); //索引号没出现的叫做追加元素
arr1[0] = '曹操';
console.log(arr1); //索引号出现的叫做替换
arr1 = '三国混战';
console.log(arr1); //千万不要直接给数组名字赋值,否则里面的数组元素都没有了
筛选大于等于十的数
var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7, 105];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] >= 10) {
newArr[newArr.length] = arr[i];
}
}
console.log(newArr);
删除指定元素
var arr = [2, 0, 6, 1, 3, 3, 3, 77, 0, 52, 0, 2, 2, 25, 7];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] != 0) {
newArr[newArr.length] = arr[i];
}
}
console.log(newArr);
翻转数组
var arr = ['关羽', '张飞', '赵云', '马超', '诸葛亮', '曹操'];
var newArr = [];
for (var i = arr.length - 1; i >= 0; i--) {
newArr[newArr.length] = arr[i];
}
console.log(newArr);
冒泡排序
var arr = [1, 3, 4, 5, 2];
for (var i = 0; i < arr.length - 1; i++) { //外层循环的趟数
for (var j = 0; j < arr.length - i - 1; j++) { //里层循环管理每次交换的次数
//内部交换2个变量的值, 前一个和后一个元素相比较
if (arr[j] > arr[j + 1]) {
//交换两个变量的值 可以借助临时变量
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr);
函数
-
函数:就是封装了一段可以被重复执行调用的代码块, 目的:就是让大量代码重复使用
函数的返回值
-
break,continue,return的区别
-
break:结束当前的循环体。
-
continue:跳出本次循环,继续执行下次循环。
-
return:不仅可以退出循环,还能够返回return语句中的值,同时还可以结束当前的函数体中的代码。
-
利用函数的封装求1-100之间的累加和
1.声明函数 function getSum() { var sum = 0; for (var i = 1; i <= 100; i++) { sum += i; } console.log(sum); } 2.调用函数 getSum(); //1.函数是做什么用的:他的最大的目的是大量代码可以重复使用,这是他最终的目的,函数就是封装了一个可以被重复调用执行的代码块,这是函数 //2.声明函数使用什么关键字:function //3.如何调用函数 函数名() //4.封装是什么意思:简单理解封装就是打包,把咱们的函数整合成一个整体
利用函数求和
1.利用函数求任意两个数的和
function getSum(num1, num2) { //num1=1 num2=3
console.log(num1 + num2);
}
getSum(1, 3); //4
getSum(3, 8); //11
//2.利用函数求任意两个数之间的和
function getSums(start, end) { //start=1 开始 end=100 结束
var sum = 0;
for (var i = start; i <= end; i++) {
sum += i;
}
console.log(sum);
}
getSums(1, 100); //5050
getSums(1, 10); //55
利用函数求任意数组中的最大值
function getArrMax(arr) { //arr 是一个形参,接受一个数组 就相当于arr=[5,2,99,101,67,77]
var max = arr[0];
for (var i = 1; i <= arr.length - 1; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
getArrMax([5, 2, 99, 101, 67, 77]) //实参是一个数组传递过去
// 在我们实际开发中, 我们经常用声明一个变量接收函数的返回结果吗, 使用更加简单
var re = getArrMax([5, 2, 99, 101, 67, 77]);
console.log(re);
利用arguments求任意个数的最大值
function getMax() { //这里的arguments就相当于数组[1,2,3,4] 就是求数组[1,2,3,4]中的最大值
var max = arguments[0];
for (var i = 1; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}
console.log(getMax(1, 2, 3, 4));
利用函数的方法封装翻转数组
function reverse(arr) {
var newArr = [];
for (var i = arr.length - 1; i >= 0; i--) {
newArr[newArr.length] = arr[i];
}
return newArr;
}
var arr1 = reverse([1, 3, 4, 6, 9]);
console.log(arr1);
利用函数封装的方法实现冒泡排序
function sort(arr) {
for (var i = 0; i < arr.length - 1; i++) {
//外层for循环
for (var j = 0; j < arr.length - i - 1; j++) {
//内层for循环
if (arr[j] > arr[j + 1]) {
//先是判断,然后交换两个变量 声明一个中间变量承接以下
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
//循环遍历之后,输出arr
return arr;
}
var arr1 = sort([1, 9, 8, 5, 2, 4, 7, 3, 6]);
console.log(arr1);
利用函数封装的方法判断是否是闰年
function isRunYear(year) {
//如果是闰年,返回true 否则是平年 返回是false
var flag = false;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
flag = true;
}
return flag;
}
console.log(isRunYear(2000));
console.log(isRunYear(1999));
冒泡排序
function Array() {
this.nine = function() {
for (var i = 0; i < arguments.length - 1; i++) {
for (var j = 0; j < arguments.length - 1; j++) {
if (arguments[j] > arguments[j + 1]) {
temp = arguments[j]
arguments[j] = arguments[j + 1]
arguments[j + 1] = temp
}
}
}
return arguments
}
}
var win = new Array();
console.log(win.nine(1, 65, 22, 56, 23, 657, 245));
封装函数
-
函数的封装是一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口。
调用函数
-
函数名();
-
调用函数的时候,小括号不能忘。
构造函数
-
构造函数要用new调用,且首字母要大写
function 构造函数名(){
this.属性 = 值;
this.方法 = function(){}
}
var fn = new 构造函数名();
console.log(fn.构造函数名(传参))
arguments
-
当我们不确定有多少个参数传递的时候,可以用arguments来获取,在Javascript中,arguments实际上是当前函数的一个内置对象,所有函数都内置了一个arguments对象,arguments对象中储存了传递的所有实参。
-
只有函数有arguments对象。
-
arguments不是数组,是一个类数组(伪数组)
-
1.具有数组的length属性
-
2.按照索引的方式进行储存
-
3.他没有真正数组的一些方法;如pop();push()等等。
-
任意数组的和
function Get() {
this.max = function() {
var mac = arguments[0];
for (var i = 0; i < arguments.length; i++) {
mac += arguments[i]
}
return mac
}
}
var cp = new Get()
console.log(cp.max(1, 2, 3, 4, 5, 6, ));
任意两个数中的最大值
function Max() {
this.max = function(num1, num2) {
if (num1 > num2) {
return num1
} else {
return num2
}
}
}
var cp = new Max()
console.log(cp.max(44, 96));
任意数的最大值
function Max() {
this.max = function() {
var mac = arguments[0];
for (var i = 0; i < arguments.length; i++) {
if (mac < arguments[i]) {
mac = arguments[i]
}
}
return mac
}
}
var sp = new Max()
console.log(sp.max(5, 3, 98, 254));
翻转任意数组
function Array() {
this.arr = function() {
var newArray = [];
for (var i = arguments.length - 1; i >= 0; i--) {
newArray += arguments[i] + ','
}
return newArray
}
}
var mac = new Array()
console.log(mac.arr(1, 2, 3, 1, 2, 3, 1, 312));
Math.random 猜数字游戏
function getRandom(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var random = getRandom(2, 8);
while (true) {
var num = prompt('你来猜?输入1~10之间的一个数字');
if (num > random) {
alert('你猜大了');
} else if (num < random) {
alert('你猜小了');
} else {
alert('你好棒啊,猜对了');
break;
}
}
数组
有一个包含工资的数组[1500,1200,2000,2100,1800],要求把数组中的工资超过2000的删除,剩余的放到新的数组里面
var arr =[1500,1200,2000,2100,1800];
var newArr=[];
for (var i = 0; i < arr.length;i++){
if (arr[i]<1500){
//newArr[newArr.length] = aee[i]
newArr.push(arr[i])
}
}
console.log(newArr);
Date日期对象
-
是一个构造函数,必须使用new来调用创建日期对象。
1.创建Date对象,如果没有参数,返回系统当前的时间。
var date = new Date(); console.log(date);
2.参数常用的写法,数字型:2021,04,14 或字符串型:“ 2021-4-14 21:46:30 ”。
var date1=new Date(2021-4-14 21:46:30); console.log(date1); var date2=new Date(2021-4-14 21:46:30); console.log(date2);
年月日时分秒
var date = new Date()
var year = date.getFullYear(); //年
var month = date.getMonth() + 1; //月
var oneDay = date.getDate(); //日
var day = date.getDay(); //星期
var hours = date.getHours(); //小时
var minutes = date.getMinutes(); //分钟
var seconds = date.getSeconds(); //秒数
console.log('今天是' + year + '年' + month + '月' + oneDay + '日' + '星期' + day + ' ' + hours + '点' + minutes + '分' + seconds + '秒');
时间戳
-
计算机的起始时间是:1970年1月1号开始的。
1.通过valueOf(); getTime();
var date = new Date();
console.log(date.valueOf());
console.log(date.getTime());
2.简单的写法,也就是最常用的方法。
var date1 = +new Date();
console.log(date1);
3.H5新增的一种写法
console.log(Date.now());
倒计时
-
核心算法:输入的时间减去现在的时间就是剩余的时间,即倒计时的时间,但是不能用时分秒相减。
-
用时间戳来做,用户输入的时间总的毫秒数减去现在时间的总的毫秒数,得到的就是剩余时间的毫秒数。
-
把剩余的时间总的毫秒数转换为天,时,分,秒。
-
计算天数:总秒数/60/60/24 计算小时:总秒数/60/60%24 计算分钟:总秒数/60%60 计算当前秒数:总秒数%24
function countDown(time) {
var nowTime = +new Date(); //返回的是当前距离1970年的时间总的毫秒数
var inpuTime = +new Date(time); //返回的是用户输入时间总的毫秒数
var times = (inpuTime - nowTime) / 1000; // times剩余时间总的毫秒数
var d = parseInt(times / 60 / 60 / 24); //天
d = d < 10 ? '0' + d : d;
var h = parseInt(times / 60 / 60 % 24); //时
h = h < 10 ? '0' + h : h;
var m = parseInt(times / 60 % 60); //分
m = m < 10 ? '0' + m : m;
var s = parseInt(times % 60); //秒
s = s < 10 ? '0' + s : s;
return '距离活动开始还剩:' + d + '天' + h + '时' + m + '分' + s + '秒';
}
console.log(countDown("2021 12 30 18:00:00"));
对象
创建对象
-
利用数组字面量
var arr = [1,2,3]; console.log(arr);
-
利用new Array()
var arr1 = new Array(); //创建一个空对象 var arr1 = new Array(3); //表示数组长度3,里面有3个空元素 var arr1 new Array(1,2,3); //等价[1,2,3] 表示里面有3个数组元素是1,2,3 console.log(arr1);
添加数组元素
-
push() 在数组的末尾添加一个或多个数组元素
var arr = [1,2,3]; console.log(arr.push(3,4))
1.push是可以给数组追加新元素
2.push() 参数直接写数组元素
3.push完毕后,返回的结果是新的数组的长度
4.原数组也会发生变化
-
unshift() 在我们数组的开头添加一个或多个数组元素
var arr=['red','green']; console.log(arr.unshift('1','2'));
1.unshift 是可以给数组前面追加新元素
2.unshift()参数直接写数组元素
3.unshift 完毕后,返回的结果是新数组的长度
4.原数组也会发生变化
删除数组元素
-
pop() 删除数组中的最后一个元素
var arr=[1,2,3]; console.log(arr.pop());
1.pop 是可以删除数组中的最后一个元素,一次只能删一个
2.pop() 没有实参
3.pop完毕后,返回值是删除的那个数组元素
4.原数组方式生了变化
-
shift() 可以删除数组中的第一个元素
var arr=[1,2,3]; console.log(arr.shift());
1.shift 可以删除数组中的第一个元素,一次只能删除一个
2.shift()没有实参
3.shift 完毕后,返回值是删除的那个数组元素
4.原数组也发生了变化
数组内置方法
-
unshift():在数组头部插入元素;
-
shift():删除数组中第一个元素;
-
pop():删除数组末尾元素;
-
push();在数组末尾添加元素;
-
concat():数组合并;
-
slice(start,end):截取数组[start,end),返回一个新数组;
-
splice:会影响原数组;
-
splice(index,how many):删除数组元素;
-
splice(index,how many,item):先删除再添加;
-
-
join(sp)与split相反 使用指定字符数组元素拼接为字符串 arr.join(',');
-
forEach(fn) fn有三个参数 item(元素本身) index(索引)arr( 元素本身)
-
some(fn) 判断数组中是否有满足规则的;
-
every(fn): 判断数组中是均满足条件;
-
filter(fn) element(数组元素) index(索引) self(数组自身) 过滤重复元素;
-
reverse():倒置数组元素;
-
sort(): arrayObject.sort(方法函数,可选),使用方法函数.按照方法函数排序,不适用,按照Unicode排序;
String 对象方法
-
str.link('url'): 使字符串变成链接;
-
str.charAt(index): 查找指定字符串;
-
str.indexOf(): 查找指定字符串第一次出现的位置,找不到返回-1;
-
str.replace('谁被替换',‘替换的内容’):替换字符串;
-
str.slice([start,end)):提取部分字符串;
-
str.split(','):分割字符串;
-
截取字符串:
-
str.substr(start,length):start:开始位置,length:截取长度;从0开始;
-
str.substring([start,stop)):start:开始位置,stop:停止位置;
-
str.toLowerCase():将指定字符串转换为小写;
-
str.toUpperCase():将字符串转化为大写;
-
str.tim():去除首字母空格;
-
-
逆转字符串:str.split('').revese().join('')
练习题
字符串 'ajdflajlksjdflkajj2378r90ud9f87ssjfh546rg4dv8' ,统计字符串中数字型字符串的个数
// var string = 'ajdflajlksjdflkajj2378r90ud9f87ssjfh546rg4dv8';
function fn() {
var num = 0;
for (var i = 0; i < string.length; i++) {
if (0 <= string[i] || string[i] <= 9) {
num++
}
}
return num
}
console.log(fn());
字符串'dsg4rdyssbf87fg45278ds45gbdsf754g5dfs7hdf45',统计字符串中数字型字符串的个数
var string = 'dsg4rdyssbf87fg45278ds45gbdsf754g5dfs7hdf45';
function fn() {
var num = 0;
for (var i = 0; i < string.length; i++) {
var sum = string.charAt(i)
if (Number(sum) == sum) {
num++
}
}
return num
}
console.log(fn());
将所有的数字挑选出来,组成一个新的字符串并输出
var string = 'ajdflajlksjdflkajj2378r90ud9f87ssjfh546rg4dv8';
function fn() {
var num = 0;
var newArr = '';
for (var i = 0; i < string.length; i++) {
if (0 <= string[i] || string[i] <= 9) {
num++
newArr += string[i]
}
}
console.log('新数组是:' + newArr);
return num
}
console.log(fn());
将所有的数字挑选出来,组成一个新的字符串并输出
var string = 'dsg4rdyssbf87fg45278ds45gbdsf754g5dfs7hdf45';
function fn() {
var num = 0;
var newArr = '';
for (var i = 0; i < string.length; i++) {
var sum = string.charAt(i)
if (Number(sum) == sum) {
num++
newArr += string[i]
}
}
console.log('新数组是:' + newArr);
return num
}
console.log(fn());
一张纸厚度是0.07毫米,假设这张纸可以无限次对折,问对折几次可以超过珠峰?8848米
// 原0.07
// 对折一次0.07*2 =0.07*1*2
// 对折两次0.07*2*2 =0.07*2*2
// 对折三次0.07*2*2*2 =0.07*3*2
// ......
function fn() {
for (var i = 1; i > 0; i++) {
if (0.07 * i * 2 == 8848 * 1000) {
return ('对折' + i + '次可以超过珠穆朗玛峰')
}
}
}
console.log(fn());
国际象棋 64 格。 第一个放一 粒米, 后面每一格都放上一格的 2 倍。 问第 64 个格上会放多少粒 米 ?
// 1 格 1粒
// 2 格 2粒
// 3 格 4粒
// 4 格 8粒
// 5 格 16粒
function xn() {
var num = 1;
for (var i = 1; i <= 64; i++) {
if (i == 64) {
// console.log(i);
// console.log('第64格放:' + num + '粒米');
return ('第64格放:' + num + '粒米');
} else {
num = num * 2
}
}
}
console.log(xn())
求取某个日期是星期几(例 如: 2021 / 5 / 25)
var date = new Date(2021, 05, 25)
var day = date.getDay()
function dn() {
if (day == 3) {
var xingqi = "日"
} else if (day == 4) {
var xingqi = "一"
} else if (day == 5) {
var xingqi = "二"
} else if (day == 6) {
var xingqi = "三"
} else if (day == 0) {
var xingqi = "四"
} else if (day == 1) {
var xingqi = "五"
} else if (day == 2) {
var xingqi = "六"
} else {
var xingai = null
}
return ('这个日期是星期' + xingqi)
}
console.log(dn());
有字符串 '46yewy5s_4weryuwvcwuywywj____4gyfd___d'', 将字符串中替换为 *
var arr='46yewy5s_4weryuwv___cwuywywj________________4gyfd___d';
function fn(str, oldChar, newChar) {
var index = str.indexOf(oldChar)
while (index !== -1) {
index = str.indexOf(oldChar, index + 1)
str = str.replace(oldChar, newChar)
}
return str
}
console.log(fn(str, '_', '*'));
删除字符串中的数字 'dfag465fdg1bs5574gdr8t4ret574dfsg5ggda5255sa'
var str = 'odfag465fdg1bs5574gdr8t4ret574dfsg5ggda5255sa'
var newStr = ''
function fn() {
for (var i = 0; i < str.length; i++) {
if (0 <= str[i] || str[i] < 10) {
} else {
newStr += str[i]
}
}
return newStr
}
console.log(fn());
反转字符串 'sgfdsga4xdggfsd ---->rfgai'
var str = 'sgfdsga4xdggfsd ---->rfgai'
console.log(str.split('').reverse().join(''));
将字符串用空格隔开 'HowAreYou' 'How Are You'
var str = 'HowAreYou'
function fn() {
var s = ''
for (var i = 0; i < str.length; i++) {
if (str[i] >= 'A' && str[i] <= 'Z') {
if (i == 0) {
s += str[i]
} else {
s = s + ' ' + str[i]
}
} else {
s += str[i]
}
}
return s
}
console.log(fn());
改变传入的数组,将数组中第n(从0开始算) 个元素放到数组的开头(用函数实现)
var arr = ['a', 's', 'd', 'f', 'e', 'h', 't', 'd', 'y']
function fn(arr, n) {
var p = arr.slice(n, n + 1)
arr.splice(n, 1)
arr.unshift(p[0])
return arr
}
console.log(fn(arr, 1));
将数组中数字内容求和 arr=[5,'张三',9,80,true,28]
var arr = [5, '张三', 9, 80, true, 28, -1, 4];
var num = 0
function fn(arr) {
for (var i = 0; i < arr.length; i++) {
if (typeof(arr[i]) == 'number') {
num += arr[i]
}
// if (Number(arr[i])) {
// num += arr[i]
// }
}
return num
}
console.log(fn(arr));