如何 'double' 数组中的数字,并将其保存在新数组中

How to 'double' numbers in an array, and save it in a new array

这是一个两步问题:

1.) 我正在尝试'double' 一个数组(原始数组)的内容,将其保存在一个新数组(双数组)中。

2.) 然后将这两个数组分配给具有 2 个属性的对象。 新对象 原始号码 翻倍的数字

这是我目前的情况,我做错了什么?

var numbers = [8, 12, 5, 2, 5, 7];
var doubledNumbers = [];


function doubled(arr){
 for (var i = 0; i < arr.length; i ++){
  var dub = arr[i];
   var dubb = dub*2;
   doubledNumbers.push(dubb);
 }

}

var collectionNumbers = {
  orginialNumbers: numbers,
  doubledNumbers: doubled(numbers)
};

console.log(collectionNumbers);

在 Javascript 中执行此操作的最佳方法是使用 map 函数:

var doubledNumbers = numbers.map(n => n*2);

map 的参数是用于将第一个数组中的元素转换为第二个数组中的元素的函数。这是一个非常有用的方法。

为了回答您最初的问题,您在 collectionNumbers 中看到 undefined 的原因是因为您忘记了 return doubledNumbers 在您的函数中(默认情况下函数 return undefined.

var numbers = [8, 12, 5, 2, 5, 7];
var doubledNumbers = [];


function doubled(arr){
 var doubledNumbers = [];
 for (var i = 0; i < arr.length; i ++){
  var dub = arr[i];
   var dubb = dub*2;
   doubledNumbers.push(dubb);
 }
 return doubledNumbers;

}

var collectionNumbers = {
  orginialNumbers: numbers,
  doubledNumbers: doubled(numbers)
};

console.log(collectionNumbers);

你的整个例程可以简化为

var numbers = [8, 12, 5, 2, 5, 7];
var collectionNumbers = {
  orginialNumbers: numbers,
  doubledNumbers: numbers.map(function(n) { return n*2; })
};

console.log(collectionNumbers);

使用Array.map创建一个双倍数字的新数组

您当前的代码有什么问题,您的 doubled 函数没有返回任何内容(这意味着它正在返回 undefined)。

更好的函数如下所示:

function doubled (arr) {
    var doubled = [];
    for (var i = 0; i < arr.length; i++) {
        doubled.push(arr[i] * 2);
    }
    return doubled;
}

但是,更好的解决方案是这样做:

var collectionNumbers = {
    orginialNumbers: numbers,
    doubledNumbers: numbers.map(function (n) { return n * 2; })
};

.map 太棒了。

使用Array.from,你可以加倍并return新数组

 let inputArray = [9,8,7,3,2]
 let outputArray = Array.from(inputArray, x => x *2) // creates new array
 console.log(outputArray)