1.实现向数组末尾追加一个元素有多少种方式
var arr = [1,2,3,4,5,6,7,8,9];
// 方式一: 使用 push();
var arr = [1,2,3,4,5,6,7,8,9];
console.log(arr); //(9) [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(arr.push(10)); // 10 这是返回这个数组的长度
console.log(arr) //(10) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// 方式二:使用 splice();
arr.splice(9,0,10); // 参数9:要插入的下标,参数0:需要替换0个元素, 参数10: 要插入的元素
console.log(arr); //(10) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// 方式三:concat():拼接数组,返回值是拼接好的新数组,但是不会改变原始数组!!
console.log( arr.concat(10) ); //(10) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
console.log(arr); //(9) [1, 2, 3, 4, 5, 6, 7, 8, 9]
// 方式四 :通过使用reverse() 将函数反转排序,然后在通过使用 unshift()在头部添加元素,再使用一次反转将元素恢复回去;
var newarr = arr.reverse();
console.log(newarr); //(9) [9, 8, 7, 6, 5, 4, 3, 2, 1]
newarr.unshift(10);
console.log(newarr); //(10) [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
console.log(newarr.reverse()); //(10) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// 方式五:使用 reverse() 方法将数组反转,然后使用 splice() 方法,在下标为0的地方添加元素10,然后在使用 reverse() 反转回去
var newarr = arr.reverse();
console.log(newarr); //(9) [9, 8, 7, 6, 5, 4, 3, 2, 1]
newarr.splice(0,0,10);
console.log(newarr.reverse()); //(10) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2.编写函数,判断一个字符串是否是 “可回文字符串”
abcba: 第一个和倒数第一是相同,第二和倒数第二个
// 方式一
function huiwen(str) {
return str == str.split('').reverse().join('');
}
var a = huiwen('abcba');
console.log(a) // true
// 方式二
// 功能:判断一个字符串是不是回文字符串
// 参数:字符串
// 返回值:true:是回文字符串;false:不是回文字符串
function isHui(str){
var len = str.length;
// 只需要循环字符串长度的一半就行
for(var i=0;i<parseInt(len/2);i++){
//如果第 n 个字符和 倒数第 n个字符有一个不相等,那么肯定不是回文字符串
if(str.charAt(i)!= str.charAt(len-1-i)){
return false;
}
}
// 代码能执行到此行,说明肯定没有执行26行的 return false;即:第n个字符和倒数第n个字符都相等。
// 那么肯定是回文字符串
return true;
}
console.log(isHui("abccba"));//true
console.log(isHui("abcdcba"));//true
console.log(isHui("abcdefg"));//false
3. 数字字母混合验证码(数字+大写字母+小写字母)
function getpassword(n){
// 用一个空字符串来接收这个验证码
var str = '';
// 验证码中的数组元素
var arr = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','a','b','c','d',];
for(var i=1; i<=n;i++){
// 随机获取数组的下标;
var index = parseInt(Math.random()*18);
// console.log(index);
// 每循环一次,生成一个数,并将数拼接在 str 上面;
str += arr[index];
}
return str;
}
var a = getpassword(4)
console.log(a)
运行代码:
4. aabccd统计每个字符出现的次数,去掉重复的字符,使结果显示 abcda:统计每个字符出现的次数aaabbbcccdddaa 统计结果为:a3b3c3d3a2;b:aaabbbcccddd 去掉相同的字符 abcd
function fn(){
var str = 'aaabbbcccdddaa';
// 思路:
// 1、要定义一个变量,来记录当前字符(庄家字符);
var char = str.charAt(0);
// 2、定义一个变量来统计重复的次数;
var count = 0;
// 3、定义一个变量来保存统计的结果
var result = '';
// 记录所有的字符串(去重的结果)
var t ='';
// 循环字符串,判断字符串当前的字符串与庄家的字符串是否相等
for(var i=0;i<str.length;i++){
if(str.charAt(i) === char){
count++;
}else{ //更换庄家字符串
// 换庄家字符串之前,先把老庄家和他记录的次数记录起来
result += char+count; // 统计 a3
t += char;
char = str.charAt(i);
count = 1;
}
}
result += char+count;
t += char;
console.log(result);
console.log(t);
}
fn() //a3b3c3d3a2
运行结果:
5、编写一个函数,获得一个十六进制的随机颜色的字符串(例如:#20CD4F)
//功能: 获取一个 十六进制的随机颜色字符串 例如:#25acad;
//参数:无;
//返回值: 颜色值
function fn(){
// 思路: 每次循环 获得一个 0~ 16 之间的随机数,转成 十六进制的数,然后拼接
var str= '#';
for(var i=0;i<6;i++){
var a = Math.floor(Math.random()*16).toString(16); //Math.floor 向下取整,舍去小数位
// var a = parseInt(Math.random()*16).toString(16); //取整舍去小数位
str += a;
}
return str;
}
var color = fn();
console.log(color)
运行结果:
能生成 十六进制的随机数思路:
六位数就要循环六次,每一次循环生成一个随机数,然后使用Math.floor取整,获取的整数通过toString(16)将其转换为 十六进制的数字,最后进行拼接成一个完整的 十六进制的颜色