解析URL地址
写一个JavaScript函数进行url地址解析参数
//"https://example.com/?query=1&id=11773" --> {query: 1, id: 11773}
//"https://example.com/check?search?query=1&id=11773" --> {}
//"https://cn.bing.com/search?q=%E5%89%8D%E7%AB%AF" --> {q: "前端"}
第一种简单粗暴的分割字符串去解析参数
function parseURLParams(url) {
const params = {}
const urlParts = url.split('?')
if (urlParts.length <= 2) {
const queryString = url.split('?')[1]
if (!queryString) {
return params
}
const pairs = queryString.split('&')
pairs.forEach((pair) => {
const [key, value] = pair.split('=')
params[key] = decodeURIComponent(value)
})
return params
}
return params
}
第二种使用Web API接口参考提供的URL()构造函数去返回一个新创建的 URL 对象去解析
function parseURLParams(url) {
const params = {};
const urlParts = url.split("?");
if (urlParts.length <= 2) {
const urlObj = new URL(url);
urlObj.searchParams.forEach((value, key) => {
params[key] = value;
});
}
return params;
}
计算选择题分数
写一个JavaScript函数计算选择题分数,单选,多选,多选题少选,漏选得一半分,多选不得分
const correct = [['c'], ['a', 'b'], ['a', 'c'], ['b', 'e'], ['c', 'd']]
const answer = [['d'], [], ['a', 'b', 'c'], ['b'], ['c', 'd']]
主要还是看考虑的情况多
function calculateScore(correct, answer) {
let totalScore = 0
for (let i = 0; i < correct.length; i++) {
const correctAnswers = correct[i]
const studentAnswers = answer[i]
if (studentAnswers.length === 0) {
// 未答题,不得分
continue
} else if (correctAnswers.length === 1) {
// 单选题
if (
studentAnswers.length === 1 &&
studentAnswers[0] === correctAnswers[0]
) {
// 回答正确得分
totalScore++
}
} else {
// 多选题
let correctCount = 0
let incorrectCount = 0
for (let j = 0; j < studentAnswers.length; j++) {
if (correctAnswers.includes(studentAnswers[j])) {
correctCount++
} else {
incorrectCount++
}
}
if (incorrectCount === 0 && correctCount === correctAnswers.length) {
// 全选对得满分
totalScore++
} else if (correctCount > 0) {
// 部分选对得一半分
totalScore += 0.5
}
}
}
return totalScore
}
写法比较生硬,有其他思路的大佬可以评论交流~~