编写一个函数,将数组中的每个项目加倍
Write a function that doubles up each item in an array
这是在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] }));
};
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 按不同项目对对象数组进行排序
- 使用JavaScript或jQuery检查单选按钮选择是否与数组中的项目匹配
- JS:从整个数组中每次得到5个项目,并得到平均值
- 使用圆中的数组更改背景颜色项目
- 编辑CSV数组中的项目-快速CSV node.js
- 我可以限制我添加到数组中的项目数量吗
- 使用javascript/jquery从现有数组中创建一个新数组,该数组保存项目存在的次数
- 什么's JavaScript数组中项目的作用域
- 将项目放入数组中
- 使用 id 和 Javascript 从数组中删除项目
- (角度.js)如何通过过滤器计算数组中有多少项目
- 如何通过迭代对象数组来删除某些项目
- Lodash 从与值数组不匹配的数组中获取项目
- 发布要形成的 n 个项目的数组
- 查找数组中项目包含子字符串的索引
- 我怎么能只保留符合特定条件的数组项目
- 关于将数组项目处理为分区的问题
- Php回显数组项目逐个点击(唯一)
- 连续删除数组项目(游戏障碍)