JavaScript 属性重复 [点与括号]....
JavaScript property duplicates [dot vs bracket]…
我有一个问题,我尝试计算组合。我尝试用 JavaScript 解决它,但有一些问题......不同集合的示例:
var colors = ["Yellow", "Blue"];
var decisions = ["Yes", "No"];
作为第一步,我创建一个空对象并尝试用两个数组填充它,并为每个组合初始化一个计数器:
var myObject = {};
for ( colorIndex in colors ) {
myObject[colors[colorIndex]] = {};
for ( decisionIndex in decisions ) {
myObject[color][decisions[decisionIndex]] = 0;
}
}
在下一步中,我尝试计算我得到的结果 - 示例:
var color = "Yellow";
var decision = "Yes";
myObject[color][decision] += 1;
调试(我尝试过的)
但是,我得到的结果是这样的:
Yellow: {Yes: 0, No: 0, Yes: NaN}
当我尝试调试正在发生的事情时,我观察到变量短代码如下:
myObject.Yellow.Yes = 0
myObject.Yellow.No = 0
myObject.Yellow["Yes"] = NaN
在这一点上,我不确定我是否遗漏了什么重要的东西,但你们中有谁知道发生了什么吗?我认为括号和点表示法应该是等效的,即使我不知道点表示法是如何在这里创建的,因为 Yes 和 No 是字符串......
你能指出我一个方向吗?
感谢您阅读本文。
编辑:更改为forEach循环:
根据建议,我将循环更改为:
var myObject = {};
colors.forEach(function(color) {
myObject[color] = {};
decisions.forEach(function(decision) {
myObject[color][decision] = 0;
});
});
但是,问题仍然存在,我得到了NaN
案例
我将您的代码修改为波纹管,并且工作正常,问题是您使用for in
的方式此外,您在应该for ( decision in decisions )
的for ( decisions in decision )
上也有错误的代码
var colors = ["Yellow", "Blue"];
var decisions = ["Yes", "No"];
var myObject = {};
for ( color in colors ) {
myObject[colors[color]] = {};
for ( decision in decisions ) {
myObject[colors[color]][decisions[decision]] = 0;
}
}
var color = "Yellow";
var decision = "Yes";
myObject[color][decision] += 1;
伙计,第二个循环中的拼写错误。你已经写了
decisions in decision
然而,它应该是
decision in decisions
一切都很好。
尝试
var myObject = {};
colors.forEach(function(color){
myObject[color] = {};
decisions.forEach(function(decision){
myObject[color][decision] = 0;
})
})
由于颜色和决策是数组,因此不应使用 for-in 进行循环访问
带字符串 - 隐藏换行符。
我继续阅读并在这里找到了这篇文章。
通过字符串化我的两个输入color
和decision
我注意到它们并不"相等",只是将其记录到控制台,事实证明其中一个有一个换行符('r
)...
JSON.stringify(color)
> "'"Yellow"'"
JSON.stringify(decision)
> "'"Yes'r'""
我知道这一点,从我问这个问题的方式中看不清楚,我的例子不允许你透露这一点。
我将做一些关于如何摆脱它的研究,但我认为它应该相当简单。
对不起,我的问题不是那么清楚,但我没想到这就是原因。非常感谢您的帮助。非常感谢!
- 保存具有相同属性 JavaScript 的元素上的值
- DOM 元素上的空样式属性:JavaScript
- 基于一个属性Javascript检索多个对象
- xml获取属性javascript不会;无法处理childNodes
- 当输入填充了必需的属性javascript/html/css时,如何更改焦点颜色
- 如何处理未定义属性的未定义属性 javascript 类型错误
- 向嵌套对象添加属性 - Javascript
- 属性 Javascript 的访问属性
- 更改链中的 css 属性 - JavaScript
- 更改属性 Javascript 方式的值
- 如何从 url 解析 xml 获取属性 javascript
- 语法错误:缺少:在属性 javascript 之后
- 创建 if 条件基于 CSS 属性 -- JavaScript
- 访问节点的属性javascript二进制搜索树
- 访问父函数属性Javascript
- 为什么未定义此对象的属性?Javascript
- 访问私有属性Javascript OOP
- 访问数组中的属性?(Javascript)
- 动态添加参数作为对象的属性-JavaScript
- 冲突/方法/属性Javascript错误