Javascript 存储大量数据的更好方法
我正在制作一份价目表,我有很多数据需要解析。所有的数据都是不同的,没有公式来解释。下面是我正在使用的代码片段。我想知道是否有更好的方法来存储和访问所有这些数据Javascript 存储大量数据的更好方法,javascript,arrays,function,select,Javascript,Arrays,Function,Select,我正在制作一份价目表,我有很多数据需要解析。所有的数据都是不同的,没有公式来解释。下面是我正在使用的代码片段。我想知道是否有更好的方法来存储和访问所有这些数据 function getPrice(number) { totalPrice = 0; for (var t = 2; t <= number; t++) { var ipp = 'cab' + (t - 1) + 'Size'; var cabP = 'p' + (t - 1
function getPrice(number) {
totalPrice = 0;
for (var t = 2; t <= number; t++) {
var ipp = 'cab' + (t - 1) + 'Size';
var cabP = 'p' + (t - 1);
var cabStyle = document.getElementById('cab' + (t - 1)).value;
var cabs = document.getElementById(ipp);
switch (cabStyle) {
case 'b1':
if (cabs.value === "") {
totalPrice = totalPrice + 0;
document.getElementById(ipp).style.border = "1px solid red";
} else if (cabs.value <= 12) {
totalPrice = totalPrice + 111;
document.getElementById(cabP).innerHTML = " $111";
document.getElementById(ipp).style.border = "";
} else if (cabs.value > 12 && cabs.value <= 13.5) {
totalPrice = totalPrice + 113;
document.getElementById(cabP).innerHTML = " $113";
document.getElementById(ipp).style.border = "";
} else if (cabs.value > 13.5 && cabs.value <= 15) {
totalPrice = totalPrice + 116;
document.getElementById(cabP).innerHTML = " $116";
document.getElementById(ipp).style.border = "";
} else if (cabs.value > 15 && cabs.value <= 16.5) {
totalPrice = totalPrice + 118;
document.getElementById(cabP).innerHTML = " $118";
document.getElementById(ipp).style.border = "";
} else if (cabs.value > 16.5 && cabs.value <= 18) {
totalPrice = totalPrice + 120;
document.getElementById(cabP).innerHTML = " $120";
document.getElementById(ipp).style.border = "";
} else if (cabs.value > 18 && cabs.value <= 19.5) {
totalPrice = totalPrice + 122;
document.getElementById(cabP).innerHTML = " $122";
document.getElementById(ipp).style.border = "";
} else if (cabs.value > 19.5 && cabs.value <= 21) {
totalPrice = totalPrice + 124;
document.getElementById(cabP).innerHTML = " $124";
document.getElementById(ipp).style.border = "";
} else if (cabs.value > 21 && cabs.value <= 22.5) {
totalPrice = totalPrice + 126;
document.getElementById(cabP).innerHTML = " $126";
document.getElementById(ipp).style.border = "";
} else if (cabs.value > 22.5 && cabs.value <= 24) {
totalPrice = totalPrice + 141;
document.getElementById(cabP).innerHTML = " $141";
document.getElementById(ipp).style.border = "";
} else if (cabs.value > 24 && cabs.value <= 27) {
totalPrice = totalPrice + 146;
document.getElementById(cabP).innerHTML = " $146";
document.getElementById(ipp).style.border = "";
} else if (cabs.value > 27 && cabs.value <= 30) {
totalPrice = totalPrice + 152;
document.getElementById(cabP).innerHTML = " $152";
document.getElementById(ipp).style.border = "";
}
break;
case 'b2':
if (cabs.value === "") {
totalPrice = totalPrice + 0;
document.getElementById(ipp).style.border = "1px solid red";
} else if (cabs.value <= 27) {
totalPrice = totalPrice + 167;
document.getElementById(cabP).innerHTML = " $167";
document.getElementById(ipp).style.border = "";
} else if (cabs.value > 27 && cabs.value <= 30) {
totalPrice = totalPrice + 173;
document.getElementById(cabP).innerHTML = " $173";
document.getElementById(ipp).style.border = "";
} else if (cabs.value > 30 && cabs.value <= 33) {
totalPrice = totalPrice + 178;
document.getElementById(cabP).innerHTML = " $178";
document.getElementById(ipp).style.border = "";
} else if (cabs.value > 33 && cabs.value <= 36) {
totalPrice = totalPrice + 183;
document.getElementById(cabP).innerHTML = " $183";
document.getElementById(ipp).style.border = "";
} else if (cabs.value > 36 && cabs.value <= 39) {
totalPrice = totalPrice + 194;
document.getElementById(cabP).innerHTML = " $194";
document.getElementById(ipp).style.border = "";
} else if (cabs.value > 39 && cabs.value <= 42) {
totalPrice = totalPrice + 199;
document.getElementById(cabP).innerHTML = " $199";
document.getElementById(ipp).style.border = "";
} else if (cabs.value > 42 && cabs.value <= 45) {
totalPrice = totalPrice + 205;
document.getElementById(cabP).innerHTML = " $205";
document.getElementById(ipp).style.border = "";
}
break;
函数getPrice(编号){
总价=0;
对于(var t=2;t重新排列一些代码可能会有所帮助。例如,document.getElementById(ipp).style.border
行在所有块中都是相同的,但第一个块除外。因此,您可以将其取出并对其进行单独的块:
document.getElementById(ipp).style.border = cabs.value ? "" : "1px solid red";
然后您的b1
出租车可以这样安排:
cabdata = [111,113,116,118,120,122,124,126,141,146,146,152,152];
// note duplicate values at end due to bigger interval
cabindex = Math.max(0,Math.ceil((cabs.value-12)/1.5));
totalPrice += cabdata[cabindex];
document.getElementById(cabP).innerHTML = " $"+cabdata[cabindex];
对于b2
,类似地:
cabdata = [167,173,178,183,194,199,205];
cabindex = Math.max(0,Math.ceil((cabs.value-27)/3));
totalPrice += cabdata[cabindex];
document.getElementById(cabP).innerHTML = " $"+cabdata[cabindex];
还要注意,上面两个块中的最后两行是相同的,因此可以将它们移动到开关之后
总有一个公式,尽管它可能不是这么简单。例如:这里的上下文是什么?你是从html中提取价格吗?什么是number
和cabStyle
?number
只是一个按钮函数的计数器,cabStyle
只是选项列表中的样式。这是有效的非常好。谢谢。为了确保我得到了它:我从cab.size中减去第一个尺码,然后除以差值得到下一个尺码?