【问题标题】:Multiplying the values of elements inside an array by 2将数组中元素的值乘以 2
【发布时间】:2023-04-10 11:44:01
【问题描述】:

我正在尝试制作一个可以采用数组或值的函数,并将其加倍。我尝试寻找一种方法来获取数组中的每个元素,然后将其乘以 2,但运行代码时没有得到所需的结果。

我觉得我在这里遗漏了一些简单的东西,但是通过 stackoverflow 和谷歌搜索并没有帮助我解决这个问题。

提前感谢您的建议/帮助!

function double(value) {
  if (Array.isArray(value)) {
    value = value.map(function(element) {
      return element * 2;
    });
  }
  return value * 2;
} 

// What the results should be, if it works:

double(2); // 4
double([1, 2, 3]); // [2, 4, 6]

【问题讨论】:

    标签: javascript arrays function


    【解决方案1】:

    你只需要返回值。

    function double(value) {
      if (Array.isArray(value)) {
        return value.map(function(element) {
          return element * 2;
        });
      }
      return value * 2;
    } 
    

    【讨论】:

      【解决方案2】:

      如果value 是一个数组,return value * 2; 将产生NaN


      如果value 不是这样的数组,您只想执行*

      function double(value) {
        if (Array.isArray(value)) {
          value = value.map(function(element) {
            return element * 2;
          });
        } else {
          value *= 2;
        }
        return value;
      } 
      
      console.log(double(2)); // 4
      console.log(double([1, 2, 3])); // [2, 4, 6]

      总结一下:

      1. 如果我们正在处理一个数组,map() 每个值都为* 2
      2. 否则,只需* 2 value
      3. 返回value

      我决定更改 value 以显示问题,与 @Munleashed answer 的唯一区别是他会立即返回值,我们可以使用 arrow function 进一步简化这一点,如下所示:

      if (Array.isArray(value)) {
        return value.map((v) => v * 2);
      } else {  
        return value * 2;
      }
      

      那么,为什么不使用ternary operator 更进一步:

      function double(value) {
        return (Array.isArray(value)) ? value.map((v) => v * 2) : (value * 2);
      } 
      
      console.log(double(2)); // 4
      console.log(double([1, 2, 3])); // [2, 4, 6]

      【讨论】:

      • 这真的很有帮助,谢谢!我想我想,因为我已经返回了元素,所以我不需要在最后返回值(如果 'if' 语句返回'false','else' 是隐含/默认的)。
      • 很高兴它有帮助。有关其他答案的更多详细信息,以及我们如何进一步简化此问题,请参阅我的最新编辑。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      相关资源
      最近更新 更多