手写题[JavaScript][场景类]
1. 密码校验,要求包含大小写字母,数字,长度为6,至少满足三个条件
可以通过正则表达式来实现。以下是一个简单的 JavaScript 函数示例,用于检查密码是否符合要求:
javascript
function validatePassword(password) {
const conditions = [
/[a-z]/, // 包含小写字母
/[A-Z]/, // 包含大写字母
/\d/, // 包含数字
/.{6,}/ // 长度至少为6
];
const satisfiedConditions = conditions.reduce((count, condition) => {
return count + (condition.test(password) ? 1 : 0);
}, 0);
return satisfiedConditions >= 3;
}
2. 数组排序,请根据 name 或者 age 进行排序
假设 array 是包含对象的数组 [{name: 'xxx', age: 12, ...}, ...]
,请根据 name 或者 age 进行排序,如果 name 中有中文是如何排序的。
javascript
// 按照 age 进行排序
array.sort((a, b) => a.age - b.age);
// 按照 name 进行排序
// localeCompare 方法会根据中文拼音对姓名进行排序
// sensitivity: 'accent' 是 localeCompare 方法的一个选项,用于指定字符串比较时是否考虑重音符号的差异
array.sort((a, b) => a.name.localeCompare(b.name, 'zh-Hans-CN', { sensitivity: 'accent' }));
3. 判断 b 是否是 a 的子集
a 和 b 有重复元素,要求 b 的同个元素出现次数 <=a 的同个元素出现次数。
javascript
function isSubset(a, b) {
// 构建哈希表记录数组 a 中各元素出现次数
const countA = new Map();
for (let num of a) {
countA.set(num, (countA.get(num) || 0) + 1);
}
// 检查数组 b 中的元素是否满足条件
for (let num of b) {
if (!countA.has(num) || countA.get(num) === 0) {
return false;
}
countA.set(num, countA.get(num) - 1);
}
return true;
}
// 示例
console.log(isSubset([1, 2, 2, 3, 4], [2, 2, 4])); // true
console.log(isSubset([1, 2, 2, 3, 4], [2, 2, 5])); // false