对象及字符串的遍历(含例题)

对象补充知识点

​ 1、对象:是一种数据类型(复合数据类型),用来存储数据。数据格式(key:value)。对象是属性和行为的结合体

​ 2、对象的定义:

(1)使用字面量:{ }

​ let 对象名 = {

​ 属性名:属性值

​ 方法名:function(【参数】){

​ 函数体语句

​ }

​ }

​ (2)使用Object:

​ a、let 对象名 = new Object()

​ 对象名.属性名 = 属性值

​ 对象名.方法名 = function(【参数】){

​ 函数体语句

​ }

​ b、let 对象名 = new Object({

​ 属性名:属性值

​ 方法名:function(【参数】){

​ 函数体语句

​ }

​ })

​ (3)使用构造函数创建对象

​ a、定义构造函数:

​ function 构造函数名(【参数】){

​ this.属性名 = 属性值

​ this.方法名 = function(【参数】){

​ 函数体语句

​ }

​ }

​ b、创建对象

​ let 对象名 = new 构造函数名(【参数】)

​ 3、对象访问属性和方法

​ 对象名.属性名

​ 对象名.方法名(【参数】)

对象的遍历

1、for in

key既是student对象的属性名或方法名,也是索引

var student = {
    name: '张三',
    age: 20
}
for (var key in student) {
   console.log(student[key]);
}

2、in 运算符  查找对象里某个属性是否存在

let student = {
            name: "张三",
            age: 18,
            gender: "男",
            show: function () {
                console.log("姓名:" + this.name);
            }
        }

        for (let result in student)  {
            console.log(result + ": " + student[result]);
        }

3、对象数组:数组中存放的是对象(数组中的每个元素都是对象)

//1.创建一个构造方法:Student
        function Student(name,city){
            this.name = name
            this.city = city
            this.html = 0  //html属性的默认值为0
            this.css = 0   //css属性的默认值为0
            this.show = function(){
                console.log('姓名:',this.name)
                console.log('城市:',this.city)
                console.log('Html成绩:',this.html)
                console.log('Css成绩:',this.css)
            }
            this.getSum = function(){
                return this.html + this.css
            }
        }
        //2.创建对象
        let s1 = new Student('贾宝玉','南京')
        s1.html = 78
        s1.css = 69
        let s2 = new Student('林黛玉','镇江')
        s2.html = 85
        s2.css = 90
        let s3 = new Student('王熙凤','南京')
        s3.html = 75
        s3.css = 78
        let s4 = new Student('薛宝钗','南京')
        s4.html = 82
        s4.css = 65
        //3.定义数组:将s1~s4对象存入该数组
        let arr  = [s1,s2,s3,s4] //arr就是对象数组
        let temp = [s1,s2,s3,s4]
        console.log(temp)
        //4.对数组中的对象按总成绩降序排列
        for(let i=0;i<arr.length;i++){
            for(let j=0;j<arr.length-1;j++){
                if(arr[j].getSum() < arr[j+1].getSum()){
                    let t = arr[j]
                    arr[j] = arr[j+1]
                    arr[j+1] = t
                }
            }
        }
        console.log(arr)

字符串补充知识点: 

String对象的常用方法:字符串名.方法名(【实参】)

​ (1)charAt( index ):返回字符串中index位置上的字符。参数index代表索引值(下标),若没有找到则返回空

​ (2)charCodeAt(index):返回字符串中index位置上的字符的Unicode编码

​ ASCII码:是美国做的字符编码 (’a’:97…..) ——— 只支持英文字符。表示一个字符使用1个字节(byte),即8个二进制位(bit)

​ Unicode码:国际标准化组织做的一套编码。表示一个字符使用2个字节,即16个二进制位(bit) —— 支持中文

​ ISO-8859-1码:不支持中文

​ GBK:支持中文

​ GB2312:支持简体中文

​ (3)concat(字符串):将两个及两个以上的字符串进行连接

​ (4)endsWith(字符串):判断字符串是否是以给定的子串结尾。是则返回true,不是则返回false

​ (5)indexOf(子串):返回子串在字符串中首次出现的位置(下标)。若返回-1,表示没有找到子串

​ (6)lastIndexOf(子串):返回子串在字符串中最后出现的位置(下标)

​ (7)includes(子串):查找字符串中是否包含指定的子串。若包含返回true,不包含返回false

​ (8)startsWith(子串):判断字符串是否以给定子串开头。是则返回true,不是则返回false

​ (9)split(分隔字符):将字符串分割成字符串数组

​ (10)replace(oldStr,newStr):在字符中查找oldStr第一次出现的位置,并用newStr替换它

​ (11)substr(start,length):截取字符串中从start开始的连续length个字符。当参数length省略时,截取从start开始到串末尾的所有字符

​ (12)substring(start,end):截取start到end之间的子串,不包含end

​ (13)trim():去掉字符串两端的空白字符

​ (14)trimEnd():去掉字符串末尾的空白字符

​ (15)trimStart():去掉字符串前面的空白字符

​ (16)toLowerCase():将字符串中的所有字母转换为小写字母

​ (17)toUpperCase():将字符串中的所有字母转换为大写字母

​ (18)toString():将字符串对象转换成字符串

 字符串的遍历

字符串中也可以通过 字符串[下标] 的形式来访问字符串中的某一个字符

同时也可以使用 for 循环和 for of 来进行遍历。

     var str = 'HEllo';
       
       for (var i = 0; i < str.length; i++) {
               console.log(str[i]); 
        }
        
        for (var item of str) {
         console.log(item);
      
        }

字符串例题:

设有字符串”yekmaakkccekymbvb”,求出该字符串中有多少种字符,以及每个字符的个数 

(其中的for (var key in o) {
          //key得到的是属性名
          //o[key] 得到的是属性值
        })

       // 采用对象进行处理 将字符串中的字符作为对象的属性,若对象中有这个属性(字符),让属性值加一,若没有这个属性(字符),则将该字符作为对象的属性加入
        var str = 'yekmaakkccekymbvb';
        let k = {}
        for (let i = 0; i < str.length; i++) {
            let char = str.charAt(i)
            // console.log(char);
            if (k[char]) {  //表示对象obj有str[i]这个属性,对应的属性值加一
                k[char]++
            } else {
                k[char] = 1
            }
        }
        console.log(k);
        let class_ = 0
        for (const key in k) {
            class_ ++
        }
      console.log(class_);


      //第二种方法
    for (let i = 0; i < str.length; i++) {
       if (obj[str[i]]) {
        obj[str[i]]++
       }else{
        obj[str[i]] = 1
       }  
    }
    console.log(obj);

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值