首页 > 解决方案 > 将数组数值反向保存在另一个数组中,然后将结果作为数值存储在变量中

问题描述

一般来说,在下面的代码中,我的目标是将数组从结束到开始的值存储在一个新数组中,然后将其显示为一个数字,当然,与此同时,我将每个数组单元格的值加倍。

我想知道有没有更简单的方法?

let firstArray = [1, 2, 3];
const secondArray = [];
firstArrayLength = firstArray.length;

let i = 0;
let y = 0;

while (i < firstArrayLength) {
  secondArray.push(firstArray.pop());
  i++;
};

secondArrayLength = firstArrayLength;

while (y < secondArrayLength) {
  if (y == 0) {
    secondArray[y] = secondArray[y] * 100;
    secondArray[y] = secondArray[y] * 2;
  }
  if (y == 1) {
    secondArray[y] = secondArray[y] * 10;
    secondArray[y] = secondArray[y] * 2;
  }
  if (y == 2) {
    secondArray[y] = secondArray[y] * 1;
    secondArray[y] = secondArray[y] * 2;
  }
  y++;
}

let sum = 0;

for (let i = 0; i < secondArray.length; i++) {
  sum = sum + secondArray[i];
}

console.log(sum);

标签: javascriptarrays

解决方案


使用一个数组的解决方案,Array.reverse()并且map()(通过改变原始数组):

let firstArray = [1, 2, 3];

firstArray.reverse(); // --> [3, 2, 1]

let sum = '';

firstArray.map(i => {
  sum += i*2+''
});

console.log(sum); // --> 642

// if you need integer value of sum
let int_sum = parseInt(sum)

不改变原始数组的解决方案:

    let firstArray = [1, 2, 3];
    let sum = '';
    
    firstArray.slice().reverse().map(i => {
      sum += i*2+''
    });

    console.log(firstArray); // --> [1, 2, 3]
    console.log(sum); // --> 642
    
    // if you need integer value of sum
    let int_sum = parseInt(sum)


推荐阅读