我正在为红色节点制作一个脚本,我希望使其易于实现。我怎样才能进一步压缩这段代码?
var notDetected = "NOT DETECTED";
var models = [
context.get('model1')||notDetected,
context.get('model2')||notDetected,
context.get('model3')||notDetected,
context.get('model4')||notDetected
];
switch(msg.topic)
{
case "core_1":
models[0] = msg.model + "";
context.set('model1', models[0]);
break;
case "core_2":
models[1] = msg.model + "";
context.set('model2', models[1]);
break;
case "core_3":
models[2] = msg.model + "";
context.set('model3', models[2]);
break;
case "core_4":
models[3] = msg.model + "";
context.set('model4', models[3]);
break;
}
var msgs = [
{payload: models[0]},
{payload: models[1]},
{payload: models[2]},
{payload: models[3]}
];
return msgs;
模型可以进一步压缩吗?短信呢?例如,我可以删除模型中的该 id 来匹配消息 id
msg[x] = {payload: models[x]};
可能吗?
最佳答案
根据可读性/可扩展性(不一定是空间)压缩代码:
- 您可以使用循环来填充
models
和msgs
数组, - 您可以在第一个“_”处拆分
core_X
字符串来获取索引,但如果您不验证输入,这可能会导致安全问题;或者您可以使用从四个字符串core_1
到实际数字的映射。
看看这里的 for 循环:https://www.w3schools.com/js/js_loop_for.asp
它可能看起来像这样:
var msgs = [];
for (x = 0; x < 4; x++) {
msgs[x] = {payload: models[x]};
}
关于javascript - 这段代码可以更短、更容易实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48614643/