练习Javascript循环或优化

练习Javascript循环或优化,javascript,Javascript,我仍在尝试将代码变小。我知道一定有更好的方法用循环写出来。有人能帮我吗 Template.project.helpers({ cell1: function() { return Session.get('cell1'); }, cell2: function() { return Session.get('cell2'); }, cell3: function() { return Session.get('cell3'); }, cell4

我仍在尝试将代码变小。我知道一定有更好的方法用循环写出来。有人能帮我吗

Template.project.helpers({
  cell1: function() {
    return Session.get('cell1');
  },
  cell2: function() {
    return Session.get('cell2');
  },
  cell3: function() {
    return Session.get('cell3');
  },
  cell4: function() {
    return Session.get('cell4');
  },
  cell5: function() {
    return Session.get('cell5');
  },
  cell6: function() {
    return Session.get('cell6');
  },
  cell7: function() {
    return Session.get('cell7');
  },
  cell8: function() {
    return Session.get('cell8');
  },
  cell9: function() {
    return Session.get('cell9');
  }
});
试试这个:

var cells = {};
for (i = 1; i <= 9; i++) {
  cells["cell" + i] = function(cell) {
      return function() {
        Session.get("cell" + cell);
      }
  }(i);
}
var cells={};

对于(i=1;i我将采用一个函数,因为对象需要一个字符串进行访问,而这正是函数所需要的

function getSession(s) {
    Session.get(s);
}
区别在于,对于任何可能的sting,对象都有自己的属性,并且它只存储具有给定属性的调用。只要对象方法中没有其他依赖代码,我就不会在OP的样式中使用它

如果对象应该像过滤器一样工作,只允许使用一些字符串,那么我将采用以下解决方案:

function getSession(s) {
    ~['cell1', 'cell2', 'cell3', 'cell4', 'cell5'].indexOf(s) && Session.get(s);
}

如果你清楚你想做什么的话,可能有。一个匿名对象,用括号括起来——这些函数都不能被调用。既然代码99%相似,为什么不使用一个普通的方法,即
cell:function(index){Session.get('cell'+index);}
问题可能更适合@epascarello CR需要完整的工作代码以供审查和可能的改进。如果不先将其编辑成有用的内容,则会拒绝此代码。此代码实际上是什么?函数调用的参数列表?这很接近,单元格[“cell”+cell]必须是单元格[“cell”+i],谢谢!