文章目录
1.1 数组操作
1.2 计算指定日期是今年的第几天
1.3 16进制随机颜色,
1.4 字符串操作
2.1 随机选学员
2.2 随机排序
题目描述:把下面数组的首尾两个元素互换
var arr = [“鹿晗”,“王俊凯”,“蔡徐坤”,“彭于晏”,“周杰伦”,“刘德华”,“赵本山”];
var arr = ["鹿晗", "王俊凯", "蔡徐坤", "彭于晏", "周杰伦", "刘德华", "赵本山"];
console.log(arr.splice(0, 1, '赵本山')); //取走第0个元素,插入赵本山
console.log(arr.splice(6, 1, '鹿晗')); //取走第6个元素,插入鹿晗
console.log(arr);
题目描述:制作一个函数,getDayNum( 年月日日期 ),可以返回指定日期是当前年的第几天
例: getDayNum( “2019-1-2”) 返回值为:2
// 1.判断是闰年还是平年
function isRun(year) {
var flag = false;
if ((year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0)) {
return flag = true;
}
}
function get_day(year, month, day) {
var days = day;
for (var i = 1; i < month; i++) {
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days += 31;
break;
case 4:
case 6:
case 9:
case 11:
days += 30;
break;
case 2:
if (isRun(year)) {
days += 29;
} else {
days += 28;
}
break;
}
}
return days;
}
var year = Number(prompt("请输入多少年:"));
var month = Number(prompt("请输入月份:"));
var day = Number(prompt("请输入几号:"));
var result = get_day(year, month, day);
document.write(result);
题目描述:使用Math对象,制作一个16进制的随机颜色
题目提示:16进制包括 “ 0 1 2 3 4 5 6 7 8 9 A B C D E F ”
例: “#f23a4b”
// 随机获取颜色值
function getColor() {
var str = "#";
for (var i = 0; i < 6; i++) {
// toString(16) == 转为16进制数字
// Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)
str += Math.floor(Math.random() * 16).toString(16);
}
return str;
}
var result = getColor();
console.log(result);
var str = 'abaasdffggghhijjkkgfddsssss3444343';
console.log(str.length); //求字符的长度
console.log(str[0]); //a
console.log(str[3]); //a
console.log(str[5]); //d
console.log(str[9]); //g
console.log(str.indexOf('a')); //a,输出最先找到的那个,找到马上停
console.log(str.indexOf('c')); //-1,没有这个元素则返回-1.false
console.log(str.indexOf('b')); //b,输出最先找到的那个,找到马上停
console.log(str.replace('g', 22)); //g元素
console.log(str.replace('ss', 'b')); //第0个元素替换为m
console.log(str.slice(1, 5)); //截取1-5的字符串
var o = {}; //创建空对象
for (var i = 0; i < str.length; i++) {
var chars = str.charAt(i); //获取字符串的每一个元素(字符)
if (o[chars]) {
o[chars]++;
} else {
o[chars] = 1;
}
}
console.log(o);
var max = 0;
var ch = '';
for (var k in o) {
if (o[k] > max) {
max = o[k];
ch = k;
}
}
console.log(max);
console.log('最多字符是' + ch);
字符串:“abaasdffggghhjjkkgfddsssss3444343”,问题如下:
1、 字符串的长度
2、 取出指定位置的字符,如:0,3,5,9等
3、 查找指定字符是否在以上字符串中存在,如:i,c ,b等
4、 替换指定的字符,如:g替换为22,ss替换为b等操作方法
5、 截取指定开始位置到结束位置的字符串,如:取得1-5的字符串
6、 找出以上字符串中出现次数最多的字符和出现的次数
7、 遍历字符串,并将遍历出的字符两头添加符号“@”
var str = 'abaasdffggghhjjkkgfddsssss3444343'; //1
console.log(str.length);
console.log(str[0]); //a
console.log(str[3]); //a
console.log(str[5]); //d
console.log(str[9]); //g
console.log(str.indexOf('i')); //-1 记得字符串加引号
console.log(str.indexOf('c')); //-1
console.log(str.indexOf('b')); //1
console.log(str.replace('g', 22)); //替换操作
console.log(str.replace('ss', 'b')); //替换操作
console.log(str.slice(1, 5)); //baas
// 6.找出以上字符串中出现次数最多的字符和出现的次数
var o = {}; //创建一个新对象用来统计出现次数
for (var i = 0; i < str.length; i++) {
var chars = str.charAt(i); //chars 是 字符串的每一个字符
if (o[chars]) { //如果返回-1,说明存在就+1
o[chars]++;
} else {
o[chars] = 1;
}
}
console.log(o); //统计出现次数
var max = 0;
var str1 = '';
for (var k in o) {
// k 得到是 属性名
// o[k] 得到的是属性值
if (o[k] > max) { //如果它的属性值 > 上一个的属性值
max = o[k]; //存放在max里,继续去比较下一个
str1 = k;
}
}
console.log(max);
console.log('出现最多的字母是:' + str1);
// 7、 遍历字符串,并将遍历出的字符两头添加符号“@”
for (var i = 0; i < str.length; i++) {
// ch = "@" + str[i] + "@";
console.log('@' + str[i] + '@');
}
从以下学员名单中随机选出4个学员:
var arr = [“鹿晗”,“王俊凯”,“蔡徐坤”,“彭于晏”,“周杰伦”,“刘德华”,“赵本山”];
注意:不要有重复的学员
var arr = ["鹿晗", "王俊凯", "蔡徐坤", "彭于晏", "周杰伦", "刘德华", "赵本山"];
var newArr = []; //创建空数组
while (newArr.length < 4) { //
var num = Math.floor(Math.random() * 7); //这里随机生成0-7,这里数字是可以重复的,num意义是当作arr数组的索引值
if (newArr.indexOf(arr[num]) === -1) { //这里作用就是判断随机生成arr数组元素在newArr数组中是否存在,不存在则indexOf()值为-1,执行里面代码
newArr.push(arr[num]); //将该值push()方法‘推’到newArr数组中,因为indexOf()结果若不是-1则表示存在该元素,就不会执行这条代码,便实现了学员不重复
}
}
console.log(newArr);
对以下学员随机排序,生成一个新数组:
var arr = [“鹿晗”,“王俊凯”,“蔡徐坤”,“彭于晏”,“周杰伦”,“刘德华”,“赵本山”];
var arr1 = ["鹿晗", "王俊凯", "蔡徐坤", "彭于晏", "周杰伦", "刘德华", "赵本山"];
arr1.sort(); //方法1
console.log(arr1);
function shuffle(arr) { //方法2
var len = arr.length;
for (var i = 0; i < len - 1; i++) {
var index = parseInt(Math.random() * (len - i));
var temp = arr[index];
arr[index] = arr[len - i - 1];
arr[len - i - 1] = temp;
}
return arr;
}
var arr = ["鹿晗", "王俊凯", "蔡徐坤", "彭于晏", "周杰伦", "刘德华", "赵本山"];
console.log(shuffle(arr)); //结果不唯一
1.判断一个字符串 ‘abcoefoxyozzopp’ 中出现次数最多的字符,并统计其次数。
// 判断一个字符串 'abcoefoxyozzopp' 中出现次数最多的字符,并统计其次数。
// o.a = 1
// o.b = 1
// o.c = 1
// o.o = 4
// 核心算法:利用 charAt() 遍历这个字符串
// 把每个字符都存储给对象, 如果对象没有该属性,就为1,如果存在了就 +1
// 遍历对象,得到最大值和该字符
var str = 'abcoefoxyozzopp';
var o = {};
for (var i = 0; i < str.length; i++) {
var chars = str.charAt(i); // chars 是 字符串的每一个字符
if (o[chars]) { // o[chars] 得到的是属性值
o[chars]++;
} else {
o[chars] = 1;
}
}
console.log(o);
// 2. 遍历对象
var max = 0;
var ch = '';
for (var k in o) {
// k 得到是 属性名
// o[k] 得到的是属性值
if (o[k] > max) {
max = o[k];
ch = k;
}
}
console.log(max);
console.log('最多的字符是' + ch);
2.数据去重
function unique(arr) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
return newArr;
}
为了方便操作基本数据类型,JavaScript 还提供了三个特殊的引用类型:String、Number和 Boolean。
基本包装类型就是把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法。
// 下面代码有什么问题?
var str = 'andy';
console.log(str.length);
按道理基本数据类型是没有属性和方法的,而对象才有属性和方法,但上面代码却可以执行,这是因为js 会把基本数据类型包装为复杂数据类型。
其执行过程如下 :
// 1. 生成临时变量,把简单类型包装为复杂数据类型
var temp = new String('andy');
// 2. 赋值给我们声明的字符变量
str = temp;
// 3. 销毁临时变量
temp = null;
分享结束。