var str = 'abcdacbabcbababcbabcabd' var obj = {} for (var i = 0; i < str.length; i++) { debugger // obj[i] = i console.log(str[i]) // console.log(i) // console.log(obj) obj[str[i]] } console.log(obj) 为什么没有向obj 里面添加
时间: 2023-06-26 07:04:29 浏览: 149
代码中的 `obj[str[i]]` 没有赋值操作,所以没有向 `obj` 对象中添加属性。如果想要将 `str` 中每个字符出现的次数统计到 `obj` 中,可以修改代码如下:
```
var str = 'abcdacbabcbababcbabcabd';
var obj = {};
for (var i = 0; i < str.length; i++) {
var char = str[i];
if (obj[char]) {
obj[char]++;
} else {
obj[char] = 1;
}
}
console.log(obj);
```
这样就能输出 `obj` 对象中每个字符出现的次数了。
相关问题
var str = 'abcdacbabcbababcbabcabd' var obj = {} for (var i = 0; i < str.length; i++) { // obj[i] = i console.log(str[i]) // console.log(i) // console.log(obj) [str[i]] } console.log(obj) 这段语法的错误
这段代码中存在语法错误和逻辑错误:
1. 在 `for` 循环内部,没有对 `obj` 对象的属性进行赋值,语句 `[str[i]]` 没有任何实际作用。
2. `obj[i] = i` 语句也没有实际作用,因为 `i` 只是一个计数器,不应该作为对象的属性名。
下面是修正后的代码:
```
var str = 'abcdacbabcbababcbabcabd';
var obj = {};
for (var i = 0; i < str.length; i++) {
var char = str[i];
if (!obj[char]) {
obj[char] = 1;
} else {
obj[char]++;
}
}
console.log(obj);
```
这段代码的作用是统计字符串 `str` 中每个字符出现的次数,并将结果存储在 `obj` 对象中。在循环内部,首先判断当前字符是否已经存在于 `obj` 对象中,如果不存在,则将其作为新属性添加到对象中,初始值为 `1`;如果已经存在,则将该属性的值加1。最后输出 `obj` 对象,即为每个字符出现的次数。
for (var i = 0; i < str.length; i++) { // obj[i] = i console.log(str[i]) // console.log(i) // console.log(obj) [str[i]] } console.log(obj) 这段语法的错误
这段代码中存在几个问题:
1. `obj` 变量没有被定义,需要先定义它为一个空对象:`var obj = {};`。
2. 在循环中,应该使用方括号语法将属性名作为字符串添加到对象中:`obj[str[i]] = i;`。
3. 循环结束后,需要将 `obj` 对象打印出来才能看到结果。
修改后的代码如下:
```
var str = "hello";
var obj = {};
for (var i = 0; i < str.length; i++) {
obj[str[i]] = i;
}
console.log(obj);
```
该代码的目的是将字符串中每个字符作为属性名,将它们的索引作为属性值,添加到一个新对象中,并最终打印出这个新对象。
阅读全文