【问题标题】:Cleaner way to write this Javascript function [closed]编写此 Javascript 函数的更简洁方法 [关闭]
【发布时间】:2020-07-15 20:32:05
【问题描述】:

寻找一种更好/更清洁/更简单的方式来写这个:

const line1 = 'a string';
const line2 = 'a second string';
const line3 = 'a third string';

  const howManyLinesToRender = (line) => {
   if (line === 1) return [line1];
   if (line === 2) return [line1, line2];
   if (line === 3) return [line1, line2, line3]; 

【问题讨论】:

  • 整个函数体可以替换成return [line1, line2, line3].slice(0, line)
  • 我认为您需要定义干净代码的含义或将您的问题改写为“是否有其他方法可以做到这一点?”。也许不是每个人都同意干净代码的含义。

标签: javascript arrays algorithm function coding-style


【解决方案1】:

更简单的方法是使用 switch:

const howManyLinesToRender = (line) => {
   switch (line) {
    case 1: return [line1]
    case 2: return [line1, line2];
    case 3: return [line1, line2, line3];
  }
}

但正如 Crice 在您问题的 cmets 中指出的那样,这个例子也可以通过以下方式满足:

return [line1, line2, line3].slice(0, line)

那是一个更干净的单线器。

【讨论】:

    【解决方案2】:

    你可以使用 slice() 方法。 slice() 方法将数组中的选定元素作为新的数组对象返回。

    slice() 方法选择从给定的 start 参数开始的元素,并在给定的 end 参数处结束,但不包括。

    var arr=[line1, line2, line3];
    return arr.slice(0, line);
    

    return [line1, line2, line3].slice(0,line);
    

    【讨论】:

      【解决方案3】:

      你可以使用switch语句

      const howManyLinesToRender = (line) => {
          switch (line) {
              case 1: return [line1]
              case 2: return [line1, line2];
              case 3: return [line1, line2, line3];
          }
      }
      

      【讨论】:

      • 为什么这样更好?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      相关资源
      最近更新 更多