JS基础经典考题:
统计字符串’abcoefoxyozzopp’中每个字符出现的次数。
思路步骤及代码:`
var arr = ‘abcoefoxyozzopp’;
// 2定义空对象
var o = {};
// 3for循环
for (var i = 0; i < arr.length; i++) {
// 4遍历每个字符
var chars = arr.charAt(i);
// 5if判断o中是否存在过
if (o[chars]) {
o[chars]++;
} else {
o[chars]=1;
}
}
// 6打印o
console.log(o);
`
思路及代码详解:
- `
hars = arr.charAt(i);
// console.log(chars);chars是每个字符!
// 【注意事项】
// 在中括号语法中,必须以字符串形式指定属性名,不能使用标识符。
// 中括号内可以使用字符串,也可以使用字符型表达式,即只要表达式的值为字符串即可。
// 关键三:判断o中是否存在该属性,不存在-赋1,存在-属性值++
if (o[chars]) {/* o[chars]得到的是属性值! /
/ 属于访问对象的属性方式2*/ /* 【顺序2】有了该属性,让它的值每次自增 /
/ o[chars]写法的原因:1、o.“a” a是一个字符串,加引号的,不能用.的写法 2、o[‘a’]是死的,需要一个活的,所以用o[chars],它是活的*/
o[chars]++;
} else {
/* 【顺序1】没有该属性,赋值为1,让它有! / / 注意:一开始没有,为0,走else,给那个属性赋值为1,下次再出现,该属性有了值,就走上面,且自增 */
// 点语法定义添加属性,通过点语法,可以在构造函数内或者对象外添加属性。(类似于:如果指定的属性名在对象中不存在,则执行添加操作;)
o[chars] = 1;
}
}
console.log(o);
`
