2D数组在JavaScript中填充不正确且未定义
2D array improperly filled and undefined in JavaScript
我正在编写一个函数,它有两个子函数:一个子函数从表单中的两个值打印2D数组,另一个子函数打印2D数组。在这一点上,我一直在尝试使用具有整数值的变量来填充2D数组,但它们没有正确填充。min变量在函数中的值似乎为0,而不是正在传递的值。
无论如何,在我创建2D阵列后,我试图测试打印2D阵列"twoDarray",但结果是未定义的?
function isValid(frm) {
var xValue = document.getElementById("X").value;
var yValue = document.getElementById("Y").value;
if (xValue <= yValue)
{
/* Draw out the multiplication table. */
function gen2Darray(min, max)
{
var lengthOf2Darray = (max - min);
var twoDarray = new Array(lengthOf2Darray);
for (var i = 0; i < lengthOf2Darray; i++)
{
twoDarray[i] = new Array(lengthOf2Darray);
for (var j = 0; j < lengthOf2Darray; j++)
{
twoDarray[i][j] = ((min + i) * (min + j)); // only takes i
}
}
}
gen2Darray(xValue, yValue);
function print_2d_string_array (array)
{
// print twoDarray, but twoDarray undefined here
}
我创建了一个jsfiddle帐户,但它在网站上的工作方式不同:http://jsfiddle.net/imparante/5yTEv/.
修复:
function isValid(frm) {
var xValue = document.getElementById("X").value;
var yValue = document.getElementById("Y").value;
var lengthOf2Darray = (yValue - xValue);
var twoDarray = new Array(lengthOf2Darray);
if (xValue <= yValue) {
/* Draw out the multiplication table. */
function gen2Darray(min, max) {
// var lengthOf2Darray = (max - min);
// var twoDarray = new Array(lengthOf2Darray);
for (var i = 0; i < lengthOf2Darray; i++) {
twoDarray[i] = new Array(lengthOf2Darray);
for (var j = 0; j < lengthOf2Darray; j++) {
twoDarray[i][j] = ((min + i) * (min + j));
$("#table").append(twoDarray[i][j] + " ");
}
}
return twoDarray;
}
gen2Darray(xValue, yValue);
function print_2d_string_array(array){
// print twoDarray
}
在twoDarray
上未定义,因为数组是在gen2Darray()
内声明和创建的,但您正试图从print_2d_string_array()
访问它。
如果将var twoDarray = new Array();
移到xValue
和yValue
声明上,则应解决未定义的错误。
纸盒示例
function isValid(frm) {
var xValue = document.getElementById("X").value;
var yValue = document.getElementById("Y").value;
var lengthOf2Darray;
var twoDarray = [];
if (xValue <= yValue){
/* Draw out the multiplication table. */
gen2Darray(xValue, yValue);
print_2d_string_array(twoDarray);
}
function gen2Darray(min, max){
lengthOf2Darray = (max - min);
twoDarray = [lengthOf2Darray];
for (var i = 0; i < lengthOf2Darray; i++){
twoDarray[i] = new Array(lengthOf2Darray);
for (var j = 0; j < lengthOf2Darray; j++){
twoDarray[i][j] = ((min + i) * (min + j)); // only takes i
}
}
}
function print_2d_string_array(array){
console.log(array);
}
}
函数的声明有点错误,而且函数gen2Darray实际上没有返回任何内容,因此变量twoDarray只能在函数的作用域中使用。
请在此处查看固定代码:http://jsfiddle.net/CC5vP/
我将这两个函数从主函数声明中移出,然后在gen2Darray(min, max)
中添加了一个返回
它似乎正在工作,您将希望修改print_2d_string_array(a)
以显示数据,而不是将其记录到控制台。
相关文章:
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- 当null应该在javascript中使用而不是未定义时
- javascript函数不返回未定义的值
- 断言var集通过<输入ng模型>不是未定义的
- ember dev fixes错误:“;断言失败:findAll的响应必须是数组,而不是未定义的“”;
- Traceur运行时:超级表达式必须为null或函数,而不是未定义的
- Javascript函数变量应生成错误,而不是未定义的错误
- 为什么我会得到未捕获的类型错误:can'找不到未定义的属性
- 检查变量是否大于某物,但不是未定义的
- 找不到“未定义”中的模块
- 从新对象的属性更新对象的属性,但前提是新对象上的属性不是未定义的
- 咖啡脚本中的“if a 不是未定义的”和“if a”有什么区别
- Ember 断言失败:来自 findQuery 的响应必须是数组,而不是未定义
- 在函数之后找不到/未定义类名
- 错误: [ng:areq] 客户控制器不是未定义的函数
- IE8 中的 IE7 模式 - 本地存储不是未定义的
- 参数“[controllerName]”在转换为TypeScript时不是未定义的NaNunction
- 如果不是未定义和索引('foo')做某事
- Dojo lang.replace - 如何提供默认值,而不是“未定义”
- ReactJS映射函数找不到未定义的属性