Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-使用if语句更改数组值_Javascript_Jquery_Arrays_If Statement - Fatal编程技术网

Javascript-使用if语句更改数组值

Javascript-使用if语句更改数组值,javascript,jquery,arrays,if-statement,Javascript,Jquery,Arrays,If Statement,我正在处理一个jquery表单文件,该文件使用数组填充基于材质选择的大小下拉列表。这很好,但是现在我们添加了一个额外的下拉列表,我们需要根据选择在数组中有不同的值 这是当前工作代码的一部分: var Material = new Array(); Material['UNC'] = new Array('40', '32'); Material['UNF'] = new Array('10', '24'); 这基本上就是我要尝试的,不确定如何: if($("#style").val

我正在处理一个jquery表单文件,该文件使用数组填充基于材质选择的大小下拉列表。这很好,但是现在我们添加了一个额外的下拉列表,我们需要根据选择在数组中有不同的值

这是当前工作代码的一部分:

var Material = new Array();
Material['UNC']    = new Array('40', '32');
Material['UNF']    = new Array('10', '24');
这基本上就是我要尝试的,不确定如何:

if($("#style").val() == "long") {  var Material = new Array();
Material['UNC']    = new Array('45', '35');
Material['UNF']    = new Array('15', '29');} else {

var Material = new Array();
Material['UNC']    = new Array('40', '32');
Material['UNF']    = new Array('10', '24');}
我一点运气都没有,我对Javascript函数不太熟悉。谢谢

单向:

var isLong = $('#style').val() === 'long';
var material = {};
material.UNC = (isLong) ? [45, 35] : [40, 32];
material.UNF = (isLong) ? [15, 29] : [10, 24];
另一种方式:

var isLong = $('#style').val() === 'long';
var material = {};
if (isLong) {
  material.UNC = [45, 35];
  material.UNF = [15, 29];
}
else {
  material.UNC = [40, 32];
  material.UNF = [10, 24];
}

正如Felix Kling指出的,最好使用对象而不是数组作为材质。我还使用了小写变量名的JavaScript约定。您可以使用
{}

而不是使用
新数组
使用
[]
新对象
,只需将
材质
变量的声明移到块外即可:

var Material = new Array();
if($("#style").val() == "long") {
    Material['UNC']    = new Array('45', '35');
    Material['UNF']    = new Array('15', '29');
} else {
    Material['UNC']    = new Array('40', '32');
    Material['UNF']    = new Array('10', '24');
}
但是,正如其他人所指出的,对于这些类型的非数字索引,应该使用对象而不是数组。还应使用对象和数组表示法:

var Material = {};
if($("#style").val() == "long") {
    Material['UNC']    = ['45', '35'];
    Material['UNF']    = ['15', '29'];
} else {
    Material['UNC']    = ['40', '32'];
    Material['UNF']    = ['10', '24'];
}

不要将数组与非数字键一起使用。改用对象。了解有关对象的详细信息:。使用数组文字也比使用构造函数更好。您对新阵列(10)的期望是什么?在加载页面时,所有可能列表的所有值都是已知的吗?还是返回服务器获取子下拉列表值?感谢您的帮助,我仍然有一个问题,我认为这是因为除非提交选择,否则该值实际上尚未确定。是否可以使用类似于
if($(“#style”).val()=“long”)
的东西,但只是在同一页的下拉列表中选择它,而不是提交?