编写一个函数,将数组中的每个项目加倍

Write a function that doubles up each item in an array

本文关键字:数组 项目 函数 一个      更新时间:2023-09-26

这是在javascript中。到目前为止,我有这个:

 var double = function (array) {
     var array = [];
     for(var i = 0; i<array.length; i++) {
         var sum = array[i] + array[i];
     }
     return sum;
};

。基本上,如果我进入这个区域:

var a = [1,2,3];

我希望函数返回:

[1,1,2,2,3,3]

。etc

reduce的方式,也许是最短的

[1,2,3].reduce(function(m,i) { return m.concat([i,i]); }, []);

和 ES6 版本

[1,2,3].reduce((m,i) => m.concat([i,i]), []);

这里有一个简洁的方法可以做到这一点:

function doubleValues(array) {
   return array.concat.apply([], array.map(function (el) { return [el, el] }));
}
console.log(doubleValues([1, 2, 3]));

一种更易于理解的方法:

function doubleValues(array) {
  var newArray = [];
  array.forEach(function (el) { newArray.push(el, el); });    
  return newArray;
}
console.log(doubleValues([1,2,3]));

还有一个 ESNext 版本:

const doubleValues = array => array.flatMap(el => [el,el]);
console.log(doubleValues([1, 2, 3]));

未经测试的代码,我对javascript不太熟悉,所以这可能会有一些语法错误:

var duplicateArrayMembers = function (array) {
  var result = [];
  for (var i = 0; i < array.length; ++i) {
    result.push(array[i]);
    result.push(array[i]);
  }
  return result;
}
var myArray = [1, 2, 3];
document.write(duplicateArrayMembers(myArray));

首先,我们声明一个带有名为 array 的参数的函数。 因为array是一个参数,所以我们不需要在函数体中声明它。

接下来,我们声明数组,我们将在其中放置复制的结果。 让我们简单地将其命名为result.

接下来,我们遍历数组。 对于数组的每个成员,我们将元素push到结果的末尾。 这意味着如果第一个成员是1我们推动1两个不同的时间,在第一步之后以[1,1]结束。

最后,在我们循环遍历数组之后,我们返回我们的result

这是更简洁的方法。

function doubleArr(arr){
   var rtn = []; 
   return arr.forEach(function(x){ rtn.push(x, x); }), rtn;
}

调用它

console.log(doubleArr([1,2,3])); // [1, 1, 2, 2, 3, 3]

如果只涉及数字数组,这里有一个简单的单行代码。

function doubleArr(arr){
   return arr.map(function(x){ return [x,x]}).join().split(",").map(Number);
}

试试这个:

var dob = function (array) {
    var test = [];
   for(var i = 0; i<array.length; i++) {
       var sum = array[i];
       test.push(sum);test.push(sum);
  }
   console.log(test);
  };
dob([1,2,3])

小提琴

我稍微

改变了你的功能。

这个想法是两次.push(item)到另一个数组中。

function double(array) {
  var output = [];
  for(var i = 0; i < array.length; i++) {
    output.push(array[i]);
    output.push(array[i]);
  }
  return output;
};
var input = [1,2,3];
var output = double(input);
alert(output);

除了可以在其他答案中找到的纯Javascript的所有方法之外,您还可以使用下划线或lo-dash等库,在这种情况下,您可以将其编写为:

_.chain(array).map(function(x) {return [x,x]}).flatten().value()

chain 函数会将数组包装在一个对象中,因此您可以对其应用连续函数。如果您从[1, 2, 3]开始,那么map将返回[[1,1],[2,2],[3,3]]。之后,flatten会将数组展平为[1,1,2,2,3,3]value()只是将其从对象中解开包装,以便您可以使用它。

这个

对我有用:

给定一个整数数组,返回一个新数组,每个值加倍。

例如:

[1, 2, 3] -

-> [2, 4, 6]

对于初学者,请尝试使用地图方法 - 它非常方便,所以是一个很好的知识。

function maps(integers) {
return integers.concat.apply([],
integers.map(function (n) { 
return [n*2] }));
};