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

时间:2013-02-21 02:33:08

标签: 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() == "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功能并不是很熟悉。谢谢

2 个答案:

答案 0 :(得分:2)

一种方式:

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];
}

正如费利克斯·克林指出的那样,最好在阵列上使用物体作为材料。我还使用了小写变量名的JavaScript约定。您可以使用new Array,而不是[]使用new Object代替{}

答案 1 :(得分:0)

您只需将Material变量的声明移到块外:

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'];
}