基于用户输入初始化JavaScript数组
Initializing JavaScript array based on user input
我有一个applet,允许用户为10个变量定义值,所有变量都可以是数组。然后,我希望程序遍历所有可能的组合,然后将计算结果保存到一个变量中。
之前我硬编码它来初始化结果数组SIGMA,通过循环遍历每个变量,无论它是矢量还是单个值,IE:
SIGMA = new Array(A.length);
for (i1=0; i1<A.length; i1++) {
SIGMA[i1] = new Array(B.length);
for (i2=0; i2<B.length; i2++) {
SIGMA[i1][i2] = new Array(C.length);
for (i3=0; i3<C.length; i3++) {
...
}
}
}
这会产生一个10维的SIGMA数组,如果有几个或更多的变量是数组,这会使处理非常慢。
我想做的是让它初始化SIGMA仅为那些变量是一个数组,而不是一个奇异值。因此,如果除了两个变量(比如X和Y)之外的所有变量都是单个数字,那么我希望有:
SIGMA = new Array(X.length);
for (i1=0; i1<X.length; i1++) {
SIGMA[i1] = new Array(Y.length);
}
然而,我不太确定这样做的最佳方法是什么,因为for循环的数量将取决于数组变量的数量。我想我要么需要使用递归函数,要么以某种方式结合一个while循环。
有人有什么好主意吗?谢谢!
我可以通过创建一个包含for循环的递归函数来解决这个问题:
sigma = new Array(eval(var_idx[0]).length);
sigma_forloop('sigma', 0)
function sigma_forloop(X, idx) {
for (var i=0; i<eval(var_idx[idx]).length; i++) {
eval(X + '[' + i + ']' + ' = new Array(eval(var_idx[idx+1]).length);')
if (idx+2 < var_idx.length) {
var Y = X + '[' + i + ']';
sigma_forloop(Y, idx+1);
}
}
}
变量'var_idx'在包含有多个值的变量的字符串数组中,因此,我要循环的就是这些变量。
我相信有一个更简单的方法,但现在这个工作。
相关文章:
- 使用javascript函数在页面初始化后加载jquery
- 未捕获错误:无法在初始化之前调用方法;
- 如何在剑道网格初始化后设置pageSizes
- React redux初始化功能,无论状态变化如何
- 为什么可以't Protractor在自动初始化的Angular网站上查找Angular
- 尝试初始化()Spine's控制器和故障
- Angular.js延迟控制器初始化
- 对插件初始化后动态加载的元素进行样式设置
- For循环已初始化但未输入
- 选择要初始化精细上传器的文件输入
- 初始化后更改输入字段的占位符文本
- 想要初始化“;min”;输入类型的属性=“;日期“;在HTML5中,具有特定日期格式的日期值
- 初始化 jQuery 数据表中的搜索输入
- 如何添加新的输入行并插入数据库并出现错误 未初始化的字符串偏移量:0 in
- 未定义的函数初始化标签输入引导程序 3.
- 从获取输入值到codeigniter控制器,并在knockout.js中初始化
- 对象#<HTML输入元素>没有方法'初始化'
- 基于用户输入初始化JavaScript数组
- 如何在jquery中动态初始化一个组件的输入字段
- 使用表单元素(输入)初始化放大弹出菜单