这是在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]
...等
答案 0 :(得分:7)
使用reduce
的方式,可能是最短的
[1,2,3].reduce(function(m,i) { return m.concat([i,i]); }, []);
和ES6版本
[1,2,3].reduce((m,i) => m.concat([i,i]), []);
答案 1 :(得分:3)
这是一个简洁的方法:
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]));
答案 2 :(得分:2)
未经测试的代码,我对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
。
答案 3 :(得分:2)
这里有更简洁的方法。
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);
}
答案 4 :(得分:1)
试试这个:
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])
答案 5 :(得分:1)
我稍微改变了你的功能。
想法是.push(item)
到另一个数组TWICE。
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);
&#13;
答案 6 :(得分:0)
除了您可以在其他答案中找到的使用纯Javascript的所有方法之外,您可以使用underscore或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()
只需将其从对象中展开,以便您可以使用它。
答案 7 :(得分:0)
这对我有用:
给出一个整数数组,返回一个新数组,每个值加倍。
例如:
[1、2、3]-> [2、4、6]
对于初学者,请尝试使用map方法-它非常方便,因此是一个很好的认识。
function maps(integers) {
return integers.concat.apply([],
integers.map(function (n) {
return [n*2] }));
};