js中,判断字符串中某字符出现次数以及统计问题

object[chars]=1与object.chars=1区别

var str = 'abcoeoofdzaupfzzopp';

        var obj = {};

        for (var i = 0; i < str.length; i++) {

            var chars = str.charAt(i);

            if (obj[chars]) {

                obj[chars] += 1;

            } else {

//问题出现在,当判断该字符未出现过时,应把该字符属性及属性值存入对象obj中

第一次我写的方式时追加属性,等号赋值 对象名.属性名=属性值 obj.chars=1;结果出错

//正确方法用 对象名[属性名]=属性值

 obj[chars] = 1;

            }

        }

        for (k in obj) {

            console.log(k);

            console.log(obj[k]);

        }

思考错误原因,第一种方式确实会新增属性以及属性值,不过,属性会被命名为chars这个变量名,而不是读取变量中的值保存为属性名,所以并没有实现chars变量值不同,保存不同的属性;而【】内可以读取该变量所存值,储存就是不同属性名和属性值。

var obj={

                    chars:1

}

var obj={

                    a:1

}

你可能感兴趣的:(js中,判断字符串中某字符出现次数以及统计问题)