Javascript 有一种方法可以“压缩”下面的内容,这样就不会太长

Javascript 有一种方法可以“压缩”下面的内容,这样就不会太长,javascript,arrays,performance,sorting,Javascript,Arrays,Performance,Sorting,我把它放在一个片段中,以便于查看。 代码可能要大得多,那么我如何缩短它以更快地响应/上传页面?请帮忙 LED0=; LED1=; LED2=; LED3=; LED4=; LED5=; LED6=; LED7=; LED8=; LED9=; LED10=; LED11=; LED12=; LED13=; LED14=; LED15=; var LED0_状态=0; var LED1_状态=0; var LED2_状态=0; var LED3_状态=0; var LED4_状态=0; var L

我把它放在一个片段中,以便于查看。 代码可能要大得多,那么我如何缩短它以更快地响应/上传页面?请帮忙

LED0=; LED1=; LED2=; LED3=; LED4=; LED5=; LED6=; LED7=; LED8=; LED9=; LED10=; LED11=; LED12=; LED13=; LED14=; LED15=; var LED0_状态=0; var LED1_状态=0; var LED2_状态=0; var LED3_状态=0; var LED4_状态=0; var LED5_状态=0; var LED6_状态=0; var LED7_状态=0; var LED8_状态=0; var LED9_状态=0; var LED10_状态=0; var LED11_状态=0; var LED12_状态=0; var LED13_状态=0; var LED14_状态=0; var LED15_状态=0; request.openGET,ajax_inputs+strLED0+strLED1+strLED2+strLED3+strLED4+strLED5+strLED6+strLED7+strLED8+strLED9+strLED10+strLED11+strLED12+strLED13+strLED14+strLED15+nocache,true; request.sendnull; setTimeout'GetArduinoIO',2000年; strLED0=; strLED1=; strLED2=; strLED3=; strLED4=; stred5=; strLED6=; stred7=; stred8=; stred9=; strLED10=; strLED11=; strLED12=; strLED13=; strLED14=; strLED15=; 函数GetButImp0 { 如果LED0_状态===1{ LED0_状态=0; strLED0=&LED0=0; } 否则{ LED0_状态=1; strLED0=&LED0=1; } } 函数GetButImp1 { 如果LED1_状态===1{ LED1_状态=0; strLED1=&LED1=0; } 否则{ LED1_状态=1; strLED1=&LED1=1; } } 函数GetButImp2 { 如果LED2_状态===1{ LED2_状态=0; strLED2=&LED2=0; } 否则{ LED2_状态=1; strLED2=&LED2=1; } } 函数getmp3 { 如果LED3_状态===1{ LED3_状态=0; strLED3=&LED3=0; } 否则{ LED3_状态=1; strLED3=&LED3=1; } } 函数getmp4 { 如果LED4_状态===1{ LED4_状态=0; strLED4=&LED4=0; } 否则{ LED4_状态=1; strLED4=&LED4=1; } } 函数getmp5 { 如果LED5_状态===1{ LED5_状态=0; strLED5=&LED5=0; } 否则{ LED5_状态=1; strLED5=&LED5=1; } }
//etc………../使用不同的数据结构。例如,使用数组代替所有这些变量

var LEDs = ["", "", "", "", "", "", ...];

然而,这不会对速度性能或下载时间产生任何重大影响,除非这会变得非常非常大。如果您担心文件的大小,您应该在部署它之前缩小代码。

看起来您可能只需要存储一个阵列—led状态阵列。在这种情况下,您可以使用以下函数生成适当的请求:

// these are the variables we'll need
var num_leds = 16;
var led_states = [];



// initially, all leds are off
for (var i = 0; i < num_leds; i ++) {
  led_states[i] = 0;
}



// returns a single led's status as part of a query string
function get_led_str(index) {
  return "&LED" + index + "=" + led_states[index];
}



// gets a string that contains each led's state, for sending to the server
function get_request_str() {
  var nocache "&nocache=" + Math.random() * 10000;

  var state_strings = led_states.map(function(state, index) {
    return get_led_str(index);
  }).join('');

  return "ajax_inputs" + state_strings + nocache;
}



// makes a request to the server to update the leds
function make_request() {
  var request = new XMLHttpRequest();

  // send the request
  request.open("GET", get_request_str(), true);
  request.send(null);
}



// toggles an led on and off
function toggle_led(index) {
  var state = led_states[index];

  if (state = 1)
    state = 0;
  else if (state = 0)
    state = 1;

  led_states[index] = state;

  // send a request to the server to update the led (since it was toggled)
  make_request();
}
您还必须稍微更新您的html

以前,您可能有过这样的经历:

<button onclick="GetButImp0()">Toggle LED 0</button>
<button onclick="GetButImp1()">Toggle LED 1</button>
<button onclick="GetButImp3()">Toggle LED 2</button>
<button onclick="GetButImp4()">Toggle LED 3</button>
现在,您可以这样做:

<button onclick="toggle_led(0)">Toggle LED 0</button>
<button onclick="toggle_led(1)">Toggle LED 1</button>
<button onclick="toggle_led(3)">Toggle LED 2</button>
<button onclick="toggle_led(4)">Toggle LED 3</button>

可以使用对象数组并使用循环对其进行初始化。以下是一个例子:

可变发光二极管=[]; var nocache=;
forvar i=0;我使用两个数组。使用一个数组。非常感谢,先生!是的,当我在一个有几kb内存的小arduino上使用它时,性能会更好。还有其他建议吗?非常感谢Brian,我尝试实现您的解决方案,但我不擅长java。您发布的代码将仅替换led=和var led状态=0?再次感谢。您好,我已经用一些代码更新了我的初始响应,这些代码可能与您正在做的类似。提图斯,您有权控制GIPO,但我认为您的代码替换了我的所有代码或只是其中的一部分?因此,请友好地进一步解释。对不起,我的英语太差了。@RobertConstantin它替换了大部分代码,缺少的是AJAX调用。从你的名字我假设你是罗马尼亚人,我是罗马尼亚人。罗马语中的持续对话。提图斯、伊米·塞尔斯泽尔和蒙卡语。这是一个非常好的选择。克里齐是普京的追随者,他明确地说,他是苏格兰人。我是艾西·托特·科杜尔:我是穆特@RobertConstantin Nu stiu daca am Intelles确切地说,这是一个由欧盟成员国的医疗机构提供的医疗护理服务。覆盆子皮。我在信息技术应用中心公开了信息技术应用中的接口和修改