🌷做一些数组的练习题,总结一下JavaScript的相关知识点
JavaScript的内置函数
-
🍨 JavaScript内置函数可以分为5类
-
常规函数
-
数组函数
-
日期函数
-
数学函数
-
字符串函数
-
常规函数9️⃣
-
alert()函数--显示警告对话框,包括一个🆗按钮
-
confirm()函数--显示一个确认对话框,包括OK、Cancel按钮
-
prompt()函数--显示输入对话框,提示等待用户输入
-
eval()函数--计算表达式的结果
-
isNaN()函数--测试是否不是一个数字
-
parseFloat()函数--将字符串转化为浮点数字
-
parseInt()函数--将字符串转化为整数数字形式-可指定几进制
-
函数--将字符串转化为Unicode码
-
unescape()函数--解码由escape函数编码的字符
数组函数4️⃣
-
join
函数:转换并连接数组中的所有元素为一个字符串function JoinDemo(){ var a,b; a = new Array(0, 1, 2, 3, 4); b = a.join("-"); return(b);//返回b=="0-1-2-3-4" }
-
length
函数:返回数组的长度function LengthDemo(){ var a,l; a = new Array(0,1,2,3,4); l = a.length; return l;//返回l==5 }
-
reverse
函数:将数组元素顺序颠倒function ReverseDemo(){ var a,l; a = new Array(0,1,2,3,4); l = a.reverse(); return l; }
-
sort
函数:将数组元素重新排序🌷sort函数有一个可选参数,用于指定排序规则的参数,具体情况可以参考:JavaScript Array sort() 方法 (w3school.com.cn)
function SortDemo(){ var a,l; a = new Array("x","y","d","l","v","o","e"); l = a.sort(); return l; }
日期函数2️⃣0️⃣
🔆一共20个,大体速记可以分为get、set 加三类特殊的
-
parse(返回从1970年1月1日零时整算起的毫秒数(当地时间))
-
UTC(返回从1970年1月1日零时整算起的毫秒数,以GMT格林威治标准时间计算)
-
toGMTString(将日期转换为字符串,为GMT格林威治标准时间)
-
get后加上Year(年)、Month(月)、Date(日)、Day(星期)、House(时)、Minutes(分)、Seconds(秒)、Time(系统)、TimezoneOffset(时差)表示获取对应的时间
-
get后加上Year(年)、Month(月)、Date(日)、House(时)、Minutes(分)、Seconds(秒)、Time(系统)、LocalString(当地)表示设定对应的时间
数学函数2️⃣6️⃣
🔆javascript数学函数其实就是Math对象,它包括属性和函数两部分
-
属性
-
Math.e
:e(自然对数) -
Math.LN2
(2的自然对数)、 -
Math.LN10
(10的自然对数)、 -
Math.LOG2E
(e的对数,底数为 2)、 -
Math.LOG10E
(e的对数,底数为10)、 -
Math.PI
(π)、 -
Math.SQRT1_2
(1/2的平方根值)、 -
Math.SQRT2
(2的平方根值)。
-
-
函数
-
abs
函数:即Math.abs(以下同),返回一个数字的绝对值 -
acos
函数:返回一个数字的反余弦值,结果为0~π弧度(radians)。 -
asin
函数:返回一个数字的反正弦值,结果为-π/2~π/2弧度 -
atan
函数:返回一个数字的反正切值,结果为-π/2~π/2弧度 -
atan2
函数:返回一个坐标的极坐标角度值。 -
ceil
函数:返回一个数字的最小整数值(大于或等于)。 -
cos
函数:返回一个数字的余弦值,结果为-1~1。 -
exp
函数:返回e(自然对数)的乘方值。 -
floor
函数:返回一个数字的最大整数值(小于或等于)。 -
log
函数:自然对数函数,返回一个数字的自然对数(e)值。 -
max
函数:返回两个数的最大值。 -
min
函数:返回两个数的最小值。 -
pow
函数:返回一个数字的乘方值。 -
random
函数:返回一个0~1的随机数值。 -
round
函数:返回一个数字的四舍五入值,类型是整数。 -
sin
函数:返回一个数字的正弦值,结果为-1~1。 -
sqrt
函数:返回一个数字的平方根值。 -
tan
函数:返回一个数字的正切值。
-
字符串函数
🔆只列出几个常用的
-
indexOf
函数:返回字符串中第一个查找到的下标index,从左边开始查找。 -
lastIndexOf
函数:返回字符串中第一个查找到的下标index,从右边开始查找。 -
length
函数:返回字符串的长度。(不用带括号) -
substring
函数:返回字符串中指定的几个字符 -
toLowerCase
函数:将字符串转换为小写。 -
toUpperCase
函数:将字符串转换为大写。 -
trim
函数:去掉字符串的前后空格。
JavaScript中提供的操作数组的函数
-
push(): 在数组的末尾添加一个或多个元素,并返回新的长度。
let arr = [1, 2, 3]; arr.push(4); console.log(arr); // [1, 2, 3, 4]
-
pop(): 删除数组的最后一个元素,并返回该元素的值。
let arr = [1, 2, 3]; let removedElement = arr.pop(); console.log(arr); // [1, 2] console.log(removedElement); // 3
-
shift(): 删除数组的第一个元素,并返回该元素的值。
let arr = [1, 2, 3]; let removedElement = arr.shift(); console.log(arr); // [2, 3] console.log(removedElement); // 1
-
unshift(): 在数组的开头添加一个或多个元素,并返回新的长度。
let arr = [2, 3]; arr.unshift(1); console.log(arr); // [1, 2, 3]
-
splice(): 从指定位置删除或添加元素。
let arr = [1, 2, 3, 4, 5]; arr.splice(1, 2); // 从索引1开始删除2个元素 console.log(arr); // [1, 4, 5] arr.splice(2, 0, 'a', 'b'); // 从索引2开始插入'a'和'b' console.log(arr); // [1, 4, 'a', 'b', 5]
练习题--合并有序数组
🔆给你两个按 非递减顺序 排列的整数数组 nums1
和 nums2
,另有两个整数 m
和 n
,分别表示 nums1
和 nums2
中的元素数目。
请你 合并 nums2
到 nums1
中,使合并后的数组同样按 非递减顺序 排列。
💠注意--原本数列为有序的、合并到nums1中、nums1初始长度为m+n
//双指针
var merge = function(nums1,m,nums2,n){
let p1=m-1, p2=n-1, p=m+n-1
while(p1>=0 && p2>=0){
if(nums1[p1]>nums2[p2]){
nums1[p]=nums1[p1];//取大的数值放在nums1的后面
p1--;
}else{
nums1[p]=nums2[p2];
p2--;
}
p--;//指针依次向前
}
for(i=0;i<=p2;i++){
nums1[i]=nums2[i];
}
}
//JavaScript中splice、sort函数解决--空间时间消耗大,不推荐,但易懂
var merge = function(nums1,m,nums2,n){
nums1.splice(m,nums1.length-m,...nums2);
nums1.sort((a,b) =>a-b)//升序排列
}
练习题--两数相加
🔆给定一个整数数组 nums
和一个整数目标值 target
,请你在该数组中找出 和为目标值 target
的那 两个 整数,并返回它们的数组下标。
var twoSum = function(nums,target){
let map = {};
for(i=0; i<nums.length; i++){
let num = nums[i];
var diff = target-num;
if(map[diff] !== undefined){
return [map[diff],i];
}
map[num]=i;//存下已有数值的下标
}
return [];//未找到
}
练习题--买股票的最佳时期
🔆给定一个数组 prices
,它的第 i
个元素 prices[i]
表示一支给定股票第 i
天的价格。
你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
var maxProfit = function(prices){
let min = prices[0];
let max = 0;
for(let i=0; i<prices.length; i++){
min = Math.min(min,prices[i]);
max = Math.max(max,prices[i]-min);
}
return max;
}
练习题--斐波那契数
🔆斐波那契数 (通常用 F(n)
表示)形成的序列称为 斐波那契数列 。该数列由 0
和 1
开始,后面的每一项数字都是前面两项数字的和。也就是:
F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1
给定 n
,请计算 F(n)
var fib = function(n){
if(n<2){
return n;
}
let p=0,q=0,r=1;
for(let i=2;i<=n;i++){
p=q;
q=r;
r=p+q;
}
return r;
}
补充
//想要交换数值的两个值可以直接使用
[nums[i],nums[j]] = [nums[j],nums[i]]