【JS】Day07

学习内容

  • 数组去重
  • 声明字符串
  • 字符串属性
  • 字符串方法
  • 字符串加密
  • 字符串应用
  • eval

数组去重

//
function fnArrNoRepeat(arr){
    //indexOf() : 查找
    //创建一个空数组
    var list = [];
    //遍历原始数组
    arr.forEach(function(item){
        //在空数组中查找遍历出来的每一个元素
        if(list.indexOf(item) === -1){
            //如果这个数组中没有找到,则将这个元素添加到这个数组中。
            list.push(item);
        }
    })
    return list;
}
console.log(fnArrNoRepeat([1,2,1,2,2,1,1,3]));

//
function fnArrNoRepeat02(arr){
    //遍历数组
    for(var i = 0,len = arr.length;i < len;i ++){
        for(var j = i + 1;j < arr.length;j ++){ // i = 2 j = 3
            if(arr[i] === arr[j]){  // [1,2,3]
                arr.splice(j,1);
                j --;
            }
        }
    }
    return arr;
}
console.log(fnArrNoRepeat02([1,2,1,2,2,1,1,3]));

//
function fnArrNoRepeat03(arr){
    //空数组
    var list = [];
    //原始数组进行排序
    arr.sort(function(a,b){return a-b;});
    arr.forEach(function(item,index,arr){
        if(item !== arr[index + 1]){
            list.push(item);
        }
    })
    return list;
}
console.log(fnArrNoRepeat03([1,2,1,2,2,1,1,3]));

//
function fnArrNoRepeat04(arr){
    return [... new Set(arr)];
}
console.log(fnArrNoRepeat04([1,2,1,2,2,1,1,3]));

声明字符串

//字面量方式: '' ""
var str = 'hello';
//构造函数方式: new String()
var o_str = new String('world');
console.log(typeof str,typeof o_str); //'string' 'object'

字符串属性

//length : 长度
var str = '中华人民共和国';
        console.log(str.length); //7

字符串方法

//查
//indexOf('字符串',start): 查找子串在父串中第一次出现的下标位置,如果没有,则返回 -1
var str = 'how do you do';
console.log(str.indexOf('do')); //4
console.log(str.indexOf('de')); //-1
console.log(str.indexOf('do',5)); //11

//lastIndexOf('字符串',start) : 查找子串在父串中从右向左查找第一次出现的下标位置,如果没有找到,返回 -1
var str = 'how do you do';
console.log(str.lastIndexOf('do')); //11
console.log(str.lastIndexOf('do',12)); //11
console.log(str.lastIndexOf('do',11)); //11
console.log(str.lastIndexOf('do',10)); //4

//charAt(index): 根据下标查找字符
console.log(str.charAt(4)); //'d'
遍历字符串
for(var i = 0,len = str.length;i < len;i ++){
    console.log(str.charAt(i));
    // console.log(str[i]);
}

//charCodeAt(index): 根据下标查找字符编码
for(var i = 0,len = str.length;i < len;i ++){
    console.log(str.charAt(i) + ':' + str.charCodeAt(i));
}

var str = '呵呵';
var ss = '';
for(var i = 0,len = str.length;i < len;i ++){
    ss += String.fromCharCode(str.charCodeAt(i) + 1);
}
alert(ss);

//中文
var str = '';
for(var i = 19968;i <= 40869;i ++){
    str += String.fromCharCode(i) + ' ';
}
document.write(str);

//替
//replace(旧串,新串): 替换字符串
//声明字符串
var str = 'how do you do';
console.log(str.replace('do','de'));
console.log(str.replace('do','de'));
//如何替换全部
while(str.indexOf('do') !== -1){
    //因为replace方法不改变原字符串,所以每一次替换的都是第一个,造成了死循环。
    //人为的让它改变原字符串,怎么改?将替换后的字符串赋值给原始字符串。
    // 'how de you do'
    str = str.replace('o','e');
}
console.log(str);

//截
//substring(start,end): 从哪截取到哪,支持参数互换、不支持负数
//substr(start,length):从哪截至多少个
//slice(start,end):从哪截取到哪,不支持参数互换、支持负数
var str = 'good good study,day day up';
console.log(str.substring(5));  //'good study,day day up'
console.log(str.substr(5));  //'good study,day day up'
console.log(str.slice(5));  //'good study,day day up'

console.log(str.substring(5,9));  //'good'
console.log(str.substr(5,9));  //'good stud'
console.log(str.slice(5,9));  //'good'

console.log(str.substring(9,5)); //'good'
console.log(str.slice(9,5)); //''

console.log(str.substring(-9,-5)); //''
console.log(str.slice(-9,-5)); //'ay d'

//转
//toUpperCase(): 将小写转为大写字母
//toLowerCase(): 将大写转为小写字母
var str = 'How Are You';
console.log(str.toUpperCase()); //'HOW ARE YOU'
console.log(str.toLowerCase()); //'how are you'

//split('切割符',length): 将字符串切割为数组
var arr = str.split(' ');
console.log(arr); //['How','Are','You']
var list = str.split('',30); // ['H', 'o', 'w', ' ', 'A', 'r', 'e', ' ', 'Y', 'o', 'u']
console.log(list);
var array = str.split('o'); //['H','w Are Y','u']

//拼
//concat(): 合并字符串
var str = 'hello';
console.log(str.concat(' world'));

//去空白
//trim(): 删除字符串两端空白
//trimStart(): 删除字符串左端空白
//trimEnd(): 删除字符串右端空白
var str = '        a      b      ';
console.log(str.trim(str));
console.log('(' + str.trim(str) + ')');
console.log('(' + str.trimStart(str) + ')');
console.log('(' + str.trimEnd(str) + ')');

字符串加密

//一、获取元素对象
// document.getElementById(id名)
var o_txt = document.getElementById('txt');
// alert(o_txt);
var o_secure = document.getElementById('secure');
var o_unse = document.getElementById('unsecure');
var o_div = document.getElementById('box');
//二、封装功能
//加密
function fnSecure(){
    //1. 获取输入的内容
    var content = o_txt.value;
    //空变量,接收加密后的内容
    var str = '';
    //2. 遍历内容中的每一个字符
    for(var i = 0,len = content.length;i < len;i ++){
        str += String.fromCharCode(content.charCodeAt(i) + 666);
    }
    //3. 加密后的内容放到盒子中
    o_div.innerText = str;
    //4. 清空文本框
    o_txt.value = '';
}
//解密
function fnUnSecure(){
    //1. 获取盒子中的加密内容
    var content = o_div.innerText;
    //空变量,接收解密后的内容
    var str = '';
    //2. 遍历内容中的每一个字符
    for(var i = 0,len = content.length;i < len;i ++){
        str += String.fromCharCode(content.charCodeAt(i) - 666);
    }
    //3. 加密后的内容放到盒子中
    o_txt.value = str;
    //4. 清空盒子
    o_div.innerText = '';
}
//三、添加事件
//调用函数:
//1. 函数名()
//2. 事件触发调用函数。
o_secure.onclick = fnSecure;
o_unse.onclick = fnUnSecure;

字符串应用

//声明字符串
var str = '    a    b    ';

while(str.indexOf(' ') !== -1){
    str = str.replace(' ','');
}
console.log('(' + str + ')');

//去除字符串中左边的空格与右边的空格 “     a     b     “  “a  b”  (不能使用trim方法)
function fnTrim(str){
    //先去掉左边空白
    while(str.charAt(0) === ' '){ //“a     b     “
        str = str.replace(' ','');
    }
    //再去掉右边空白
    //转为数组
    var arr = str.split('');
    while(arr[arr.length - 1] === ' '){
        arr.pop();
    }
    return arr.join('');
}
console.log('(' + fnTrim('    a     b     ') + ')')
</script>

//统计出一个字符串中所有大写字母的数量与所有小写字母的数量
//有一个字符串
//遍历出第一个字符
//ch >= 'a' && ch <= 'z'
//ch >= 'A' && ch <= 'Z'
function fn(str){
    //未统计之前,数量为0
    var uppercase_count = 0;
    var lowercase_count = 0;
    //遍历原始字符串
    for(var i = 0,len = str.length;i < len;i ++){
        //取出一个字符
        var ch = str.charAt(i);
        //判断这个字符是否为小写
        if(ch >= 'a' && ch <= 'z'){
            //如果是小写,就 + 1
            lowercase_count ++;
        }else if(ch >= 'A' && ch <= 'Z'){ //判断这个字符是否为大写
            //如果是大写,就 + 1
            uppercase_count ++;
        }
    }
    console.log('大写字母有:' + uppercase_count + '\n小写字母有:' + lowercase_count);
}
fn('How Are You');

//一次性输入多个成绩
//一、获取页面元素对象
var o_txt = document.getElementById('txt');
var o_btn = document.getElementById('sum');
//二、实现功能
function fn(){
    //1. 采集用户输入的信息
    var content = o_txt.value;   //'1,2,3,4'
    //2. 转为数组,以逗号切割
    var arr = content.split(','); //['1','2','3','4']
    //3. 数组中求和的方法reduce
    var sum = arr.reduce(function(a,b){
        return Number(a) + Number(b);
    })
    //4. 将sum放到页面中
    o_txt.value = sum;
}
//三、添加事件
//o_btn: 元素对象
//click: 点击事件(名词)
//onclick: 事件驱动(动词)
//fn: 事件处理程序(触发事件了,会执行什么)
o_btn.onclick = fn;

o_btn.onclick = function (){
    //1. 采集用户输入的信息
    var content = o_txt.value;   //'1,2,3,4'
    //2. 转为数组,以逗号切割
    var arr = content.split(','); //['1','2','3','4']
    //3. 数组中求和的方法reduce
    var sum = arr.reduce(function(a,b){
        return Number(a) + Number(b);
    })
    //4. 将sum放到页面中
    o_txt.value = sum;
}

//影响职业因素
//技术   学历   颜值  运气  智商  情商  钱   态度
//这个单词中的每一个字母在26个字母表中的位置 进行相加
//如: abc   1 + 2 + 3 = 6
//一、获取页面元素对象
//文本框
var o_txt = document.getElementById('txt');
//计算按钮
var o_btn = document.getElementById('btn');
//清空按钮
var o_reset = document.getElementById('reset');
//盒子
var o_div = document.getElementById('box');
//二、实现功能 
function fn(){
    //1. 采集用户输入的单词
    var content = o_txt.value;
    //2. 创建一个字母表
    var letter = ' abcdefghijklmnopqrstuvwxyz';
    //2.1 和
    var sum = 0;
    //2.2 表达式
    var str = '';
    //3. 遍历单词
    for(var i = 0,len = content.length;i < len;i ++){
        //遍历字母表
        for(var j = 0;j < letter.length;j ++){
            //判断是否相等
            if(content.charAt(i) === letter.charAt(j)){
                //求和
                sum += j;
                //连接表达式
                // str += '+' + j; // '+1+2+3'
                str += j + '+'; //'1+2+3+'
            }
        }
    }
    //结果放到页面中
    o_div.innerText = str.slice(0,-1) + '=' + sum;
}
//清空功能
function fnClear(){
    o_txt.value = o_div.innerText = '';
}
//三、添加事件
o_btn.onclick = fn;
o_reset.onclick = fnClear;

eval

//eval() : 将字符串解析为表达式,并返回结果
var str = 'a + 1';   a + 1
console.log(eval(str));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值