JS 数组无法读取未定义的属性 663,并将计算作为索引
JS Array cannot read property 663 of undefined with a calculation as an index
这是我当前的代码:JSFiddle
在第 36 行:tempX = x + k - seedSeparation / 2;
给出一个错误。如果我tempX
更改为x
,k
或seedSeparation / 2
它有效。
代码摘录:
var mapX = 1000,
mapY = mapX,
seedLess = 3,
seedSeparation = 32, //Even number
canSeed, tempX, tempY,
x, y, seedNum = Math.round(((mapX + mapY) / 2) / seedLess);
var map = [];
for (i = 0; i <= mapX; i++){
map[i] = [];
for (k = 0; k <= mapY; k++){
map[i][k] = 0;
}
}
x = Math.floor((Math.random()*mapX)+1);
y = Math.floor((Math.random()*mapY)+1);
for (l = 0; l <= seedSeparation; l++){
for (k = 0; k <= seedSeparation; k++){
tempX = x + k - seedSeparation / 2; //Here lies the problem
tempY = y + l - seedSeparation / 2;
if(tempX >= 0 || tempY >= 0){
if(map[tempX][tempY]){
canSeed = false;
}
}
}
}
这里有什么问题?为什么这个计算会给我一个错误?
看小提琴,问题不在于你标记的那一行,而在于下面几行:
if(map[tempX][tempY]){
这意味着map
中没有输入 tempX
中的值,因此map[tempX]
为您提供值undefined
。然后您尝试执行(实际上)undefined[tempY]
,但失败,因为您无法从 undefined
中读取属性值。
您可以重写它以防止这种可能性:
if(map[tempX] && map[tempX][tempY]){
相关文章:
- 名称输入的索引
- 在jQuery中获取表的行索引
- 测试索引值是否等于某个数字的倍数
- 循环遍历数组中的特定索引
- 按照选项卡索引的顺序循环一个jQuery选择
- 根据元素和容器大小计算边距
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 在JavaScript中通过索引从对象数组中获取值
- 使用D3.js计算带有字母间距的文本长度
- 使用CSS或JavaScript计算分页符的数量
- 尝试在PHP中回显输入文本时出现未定义的索引错误
- 可以't计算自定义谷歌地图的js
- 如何使用JavaScript计算数组中的索引
- JS 数组无法读取未定义的属性 663,并将计算作为索引
- 计算 Javascript 数组索引的出现次数
- Eloquent Javascript第二名.第4章.计算相关性.Lycarthorpe的日志-〔定义的索引〕第1部分
- 如何在不计算隐藏元素的情况下获取索引
- 计算广告偏移后的幻灯片索引
- 在JavaScript中计算特定索引前的字符数
- 如何在不计算扩展实体的情况下找到标记(元素)的字符串索引?