【问题标题】:multiplying certain elements of an array javascript将数组javascript的某些元素相乘
【发布时间】:2020-07-10 02:18:54
【问题描述】:
var valid1=[4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8]

function validateCred(array) {
  let doubleArray =0
  for(i=array.length-2; i >= 0; i-=2) {
          doubleArray= array[i]*2
  }
  console.log(doubleArray);      
}

validateCred(valid1)  //prints 8 I want it to print entire loop

我正在尝试编写 luhn 算法,这是从后面每第二个数字加倍的第一步,我希望我的结果等于 doubleArray 但是当我尝试打印时只打印 8 次

【问题讨论】:

  • 将此行 doubleArray= array[i]*2 更改为 array[i] *= 2 并最终控制数组

标签: javascript arrays loops


【解决方案1】:

您只有 8 个打印,因为您有步骤 i-2。另外,请参阅代码中关于反转数组的 cmets

const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8];

function validateCred(array) {
   let doubleArray = [];
   // we should move through all iterations that is why step i-=1
   for(let i = array.length-1; i >= 0; i -= 1) {
      // moving from the end of the array we will get reversed copy if using method push()
      // that is why changed to unshift()
      doubleArray.unshift((array.length - 1 - i) % 2 == 0 ? array[i] * 2 : array[i]);
      // array.length - 1 - i - using because we need to move from right in case length not odd
   }
   console.log(doubleArray);
}

// ES6+ syntax version version
function esValidateCred1(array) {
  const doubleArray = array.reverse().map((i, ind) => ind % 2 === 0 ? i*2 : i).reverse();
  console.log(doubleArray);;
}

validateCred(valid1);
esValidateCred1(valid1);

【讨论】:

    【解决方案2】:

    您可以参考下面的代码来获得所需的输出,即从后面开始的具有双倍值的数组。

      var valid1=[4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8]
    
        function validateCred(array) {
           let doubleArray = [];
           for(i=array.length-2; i >= 0; i-=2) {
              doubleArray.push(array[i] * 2)
           }
           return(doubleArray);      
        }
    
        console.log(validateCred(valid1))

    【讨论】:

      【解决方案3】:

      最简单的方法是对数组使用 .map() 方法

      var valid1=[4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8]
      
      function validateCred(array) { 
        return array.map(item => item*2);      
      }
      
      console.log( validateCred(valid1) )  //prints array doubled elements

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-31
        • 1970-01-01
        • 2019-02-28
        • 1970-01-01
        • 2021-12-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多