字符串练习题
js
// 生成一个a-z的字符串
let str = ''
for (let i = 97; i <= 122; i++) {
str += String.fromCharCode(i)
}
console.log(str)js
// 将下面的字符串分割成一个单词数组,同时去掉数组中每一项的,和.
var str =
'Lorem, ipsum dolor sit amet consectetur adipisicing elit. Adipisci impedit voluptatem cupiditate, est corporis, quis sunt quod tempore officiis hic voluptates eaque commodi. Repudiandae provident animi quia qui harum quasi.';
let result = str.split(" ");
for (let i = 0; i < result.length; i++) {
result[i] = result[i].replaceAll(",", "").replaceAll(".", "");
}
console.log(result);js
// 得到下面字符串中第一个i和最后一个i之间的子串
var str =
'Lorem, ipsum dolor sit amet consectetur adipisicing elit. Adipisci impedit voluptatem cupiditate, est corporis, quis sunt quod tempore officiis hic voluptates eaque commodi. Repudiandae provident animi quia qui harum quasi.';
let firstI = str.indexOf("i");
let lastI = str.lastIndexOf("i");
let result = str.slice(firstI + 1, lastI);
console.log(result);js
// 将下面的rgb格式转换成为HEX格式
var rgb = 'rgb(253, 183, 25)';
let parts = rgb.replaceAll('rgb', "").replaceAll("(", "").replaceAll(")", "").split(",");
let r = parseInt(parts[0]).toString(16);
let g = parseInt(parts[1]).toString(16);
let b = parseInt(parts[2]).toString(16);
let result = `#${r}${g}${b}`;
console.log(result);js
// name转换成驼峰命名
var name = 'has own property'; // --> hasOwnProperty
let result = "";
let parts = name.split(" ");
for (let i = 0; i < parts.length; i++) {
let s = parts[i];
if (i > 0) {
s = s[0].toUpperCase() + s.substring(1);
}
result += s;
}
console.log(result);Math练习题
js
/**
* 得到一个指定范围内的随机整数
* @param {number} min 范围的最小值
* @param {number} max 范围的最大值(无法取到最大值)
* @return {number} 范围内的随机整数
*/
function getRandom(min, max) {
return Math.floor(Math.random() * (max - min) + min);
}js
function getRandom(min, max) {
return Math.floor(Math.random() * (max - min) + min);
}
/**
* 得到一个指定长度的随机字符串
* 字符串包含:数字、字母
* @param {number} length 字符串的长度
* @return {number} 随机字符串
*/
function getRandomString(length) {
var str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
let result = "";
for (let i = 0; i < length; i++) {
var index = getRandom(0, str.length);
result += str[index];
}
return result
// 方法二:巧办法
// return Math.random().toString(36).substr(2, 2 + length);
}
let res = getRandomString(7);
console.log(res);js
function getRandom(min, max) {
return Math.floor(Math.random() * (max - min) + min);
}
/**
* 从一个数组中随机取出一项
* @param {any[]} arr 数组
* @return {any} 数组的随机一项
*/
function getRandomItem(arr) {
return arr[getRandom(0, arr.length)];
}
var arr = [2, 3, "abc", "h", 6];
console.log(getRandomItem(arr));日期练习题
js
/**
* 将日期格式化为字符串
* @param {Date} date 要格式化的日期对象
* @param {string} format 格式化字符串 yyyy-年 MM-月 dd-日 HH-小时 mm-分钟 ss-秒 ms-毫秒
* @return {string} 日期字符串
*/
function formatDate(date, format) {
var year = date.getFullYear().toString().padStart(4, '0');
var month = (date.getMonth() + 1).toString().padStart(2, '0');
var day = date.getDate().toString().padStart(2, '0');
var hour = date.getHours().toString().padStart(2, '0');
var minute = date.getMinutes().toString().padStart(2, '0');
var second = date.getSeconds().toString().padStart(2, '0');
var millisecond = date.getMilliseconds();
return format
.replace('yyyy', year)
.replace('MM', month)
.replace('dd', day)
.replace('HH', hour)
.replace('mm', minute)
.replace('ss', second)
.replace('ms', millisecond);
}
var d = new Date();
console.log(formatDate(d, 'yyyy年MM月dd日 HH时mm分ss秒'));
/*
方法巧妙在:
1. 使用了字符串的replace来进行传入参数的格式替换
2. 使用padStart方法填充0
*/数组练习题
js
/*将下面多个数组拼接成一个数组 */
var nums1 = [1, 2, 3];
var nums2 = [4, 5, 6];
var nums3 = [7, 8, 9];
var nums = nums1.concat(nums2, nums3);
console.log(nums);js
/* 删除数组中的所有字符串 */
var nums = [1, 1, '1', 'a', 'b', 'a', 3, 5, 3, 7];
for (let i = 0; i < nums.length; i++) {
if (typeof nums[i] === 'string') {
nums.splice(i, 1);
i--;
}
}
console.log(nums);
/*
这里i--的原因是因为,每一次删除一个元素后,数组的长度就会减少,对应的索引就会改变
所以,在删除某个元素之后,还应该回头看一眼当前位置的元素,是不是字符串
*/js
/* 数组去重 */
var nums = [1, 1, '1', 'a', 'b', 'a', 3, 5, 3, 7];
for (let i = 0; i < nums.length; i++) {
const item = nums[i];
// 下表i之后有无等于i的元素,有就删除
for (let j = i + 1; j < nums.length; j++) {
if (item == nums[j]) {
nums.splice(j, 1);
j--;
}
}
}
console.log(nums);
/* 技巧:
当写双重for循环的时候,将外曾循环给忘记,将任务拆解为单个,这样就容易得多了。
外层循环:i=0时 元素是1 我们思考的只是,内层怎么找到后方有元素也是1的元素,删除即可
*/js
// 判断下面的文件是否符合后缀名要求
// 合法的后缀名:.jpg .gif .bmp .webp .png
var filename = 'd://files/mymap/3.jpg';
const index = filename.lastIndexOf('.');
const extname = filename.substring(index);
const validExts = ['.jpg', '.gif', '.bmp', '.webp', '.png'];
if (validExts.includes(extname)) {
console.log('符合要求');
}js
// 进一步完善下面的扑克牌程序
// 给牌堆添加一个shuffle方法,该方法可以打乱牌堆中扑克牌的顺序
/**
* 创建一张扑克牌
* @param {number} number 1-1, ..., 11-J,12-Q,13-K,14-小王,15-大王
* @param {number} color 1-黑桃 2-红桃 3-梅花 4-方片
*/
function Poker(number, color) {
this.number = number;
this.color = color;
}
Poker.prototype.print = function () {
if (this.number === 14) {
console.log('joker');
return;
}
if (this.number === 15) {
console.log('JOKER');
return;
}
// 其他情况
// 得到花色
var colors = ['♠', '♥', '♣', '♦'];
var color = colors[this.color - 1];
// 点数
var numbers = [
'A',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'10',
'J',
'Q',
'K',
];
var number = numbers[this.number - 1];
console.log(color + number);
};
/*
一碟扑克牌
*/
function Deck() {
this.pokers = [];
for (var i = 1; i <= 13; i++) {
for (var j = 1; j <= 4; j++) {
this.pokers.push(new Poker(i, j));
}
}
this.pokers.push(new Poker(14, 0));
this.pokers.push(new Poker(15, 0));
}
Deck.prototype.print = function () {
for (var i = 0; i < this.pokers.length; i++) {
this.pokers[i].print();
}
};
/**
* 洗牌,打乱牌堆中的扑克牌顺序
*/
Deck.prototype.shuffle = function () {
this.pokers.sort(function () {
return Math.random() - 0.5;
});
};
const deck = new Deck();
deck.shuffle();//打乱牌顺序
deck.print();