美文网首页
JavaScript练习题

JavaScript练习题

作者: e20a12f8855d | 来源:发表于2018-11-13 16:02 被阅读1次
  1. 字符串的操作

给定一个字符串 "qwertyuiop123445pqqQq",问题如下:

  • a. 字符串的长度;
  • b. 取出指定位置的字符,如: 0,3,5,9 等;
  • c. 查找指定字符是否在以上字符串中存在;
  • d. 替换指定的字符,如:q 替换为 22;
  • e. 截取指定开始位置到结束位置的字符串,如:取得 1-5 的字符串;
  • f. 找出以上字符串中出现次数最多的字符和出现的次数;
  • g. 遍历字符串,并将遍历出的字符两头添加符号“@”输出。

解析:

a. 字符串的长度

console.log(str.length);  // 21

b. 取出指定位置的字符,如: 0,3,5,9 等

console.log(str[0], str[3], str[5], str[9]);  // q r y p

c. 查找指定字符是否在以上字符串中存在
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置
如果没有找到该字符串,就返回-1

function haveOr(s) {
    if (str.indexOf(s) == -1) {
        console.log("该字符不存在");
    } else {
        console.log("该字符存在");
    }
}
haveOr("s") // 该字符不存在
haveOr("q") // 该字符存在

d. 替换指定的字符,如:q 替换为 22
replace() 方法用于在字符串中用一些字符替换另一些字符
或替换一个与正则表达式匹配的子串

// 只替换第一个匹配的字符
console.log(str.replace('q', '22')); // 22wertyuiop123445pqqQq

// 替换所有匹配的字符串
console.log(str.replace(/\q/g, '222')); // 222wertyuiop123445p222222Q222

e. 截取指定开始位置到结束位置的字符串,如:取得 1-5 的字符串
slice() 方法可从已有的数组中返回选定的元素

console.log(str.slice(1, 5)); // wert

f. 找出以上字符串中出现次数最多的字符和出现的次数

var arrStr = str.split(""); // 将字符串转换为数组

// 便历转换得到的数组,把数组中每个元素对应出现的个数计算出来
var newArr = [];
for (var i = 0; i < arrStr.length; i++) {
    if (newArr[arrStr[i]]) {
        newArr[arrStr[i]] += 1;
    } else {
        newArr[arrStr[i]] = 1;
    }
}
// 便历存放数组元素个数的数组,将出现次数最多的元素及出现次数循环出来
var mostStr = ""; // 出现最多的元素
var mostNum = 1; // 出现的个数
for (var k in newArr) {
    if (newArr[k] > mostNum) {
        mostNum = newArr[k];
        mostStr = k;
    }
}
console.log("出现次数最多的元素是:" + mostStr + ";" + "出现" + mostNum + "次"); // 出现次数最多的元素是:q;出现4次

g. 遍历字符串,并将遍历出的字符两头添加符号“@”输出

var strArr = str.split("")
var newStr = "";
for (var i = 0; i < strArr.length; i++) {
    var newChar = "@" + strArr[i] + "@;";
    newStr += newChar
}
console.log(newStr); // @q@;@w@;@e@;@r@;@t@;@y@;@u@;@i@;@o@;@p@;@1@;@2@;@3@;@4@;@4@;@5@;@p@;@q@;@q@;@Q@;@q@;

  1. 日期对象的操作

根据当前日期进行以下方面的处理:

  • a. 取得日期的年份、月份、天、时、分、秒,并转换成大写日期格式如 : 2018年11月14日14时40分20秒。
  • b. 根据日期的不同时间段,做问候语:
    早上 8:00-12:00 : “早上好!”
    中午 12:00-14:00 :“中午好!”
    下午 14:00-18:00 :“下午好!”
    晚上 19:00-00:00 :“晚上好!”
  • c. 计算当前时间向前、向后(一天、一个月)的日期,并取出是星期几。

解析:

a. 取得日期的年份、月份、天、时、分、秒,并转换成大写日期格式如 : 2018年11月14日14时40 分20秒
b. 根据日期的不同时间段,做问候语:
早上 8:00-12:00 : “早上好!”
中午 12:00-14:00 :“中午好!”
下午 14:00-18:00 :“下午好!”
晚上 19:00-00:00 :“晚上好!”

function getDate() {
    var dateTime = new Date();
    var year = dateTime.getFullYear();
    var month = dateTime.getMonth() + 1;
    var date = dateTime.getDate();
    var hours = dateTime.getHours();
    var minutes = dateTime.getMinutes();
    var seconds = dateTime.getSeconds();
    var day = dateTime.getDay();
    var dateStr = year + "年" + month + "月" + date + "日" + hours + "时" + minutes + "分" + seconds + "秒";

    var dateDom = document.getElementById("date");
    dateDom.innerHTML = dateStr;

    var greetings = "";
    var message = document.getElementById("message");
    if (hours >= 8 && hours < 12) {
        greetings = "早上好!";
    } else if (hours >= 12 && hours < 14) {
        greetings = "中午好!";
    } else if (hours >= 14 && hours < 18) {
        greetings = "下午好!";
    } else {
        greetings = "晚上好!";
    }
    message.innerHTML = greetings;
}
setInterval("getDate()", 100);

c. 计算当前时间向前、向后(一天、一个月)的日期,并取出是星期几。

var dateTime2 = new Date();
dateTime2.setDate(dateTime2.getDate() - 1);
var year2 = dateTime2.getFullYear();
var month2 = dateTime2.getMonth() + 1;
var date2 = dateTime2.getDate();
var day2 = dateTime2.getDay();
var weekArr = ["星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];

console.log("前一天是" + year2 + "年" + month2 + "月" + date2 + "日" + weekArr[day2]);

  1. 执行数学任务

建立两个函数,一个函数是中学二次函数(y= (2/5)x^2 + (9/10)x - 15 )表达式的计算方法;
另一个函数是给定任意的若干个 x 值,调用前一个函数计算 y 对应的值,并使用( x,y)方式输出每个值得计算结果计算结果。

function quadraticFun(x) {
    this.x = x;
    return y = ((2 / 5) * Math.pow(x, 2) + (9 / 10) * x - 15);
}
console.log(quadraticFun(10));  // 34

function dyFun(arr) {
    for (var i = 0; i < arr.length; i++) {
        console.log("(" + arr[i] + "," + quadraticFun(i) + ")");
    }
}
dyFun([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);

// (0,-15)
// (1,-13.7)
// (2,-11.6)
// (3,-8.7)
// (4,-5)
// (5,-0.5)
// (6,4.800000000000001)
// (7,10.900000000000002)
// (8,17.800000000000004)
// (9,25.5)
// (10,34)

  1. 使用二重循环打印九九乘法表
for (var i = 1; i <= 9; i++) {
    for (var j = 1; j <= i; j++) {
        document.write(i + "*" + j + "=" + i * j + " ");
    }
    document.write("<br>")
}

未完待续......


期待您的关注!

相关文章

网友评论

      本文标题:JavaScript练习题

      本文链接:https://www.haomeiwen.com/subject/czdlfqtx.html