我想返回一个数组,changeArray,其中每个元素都在“array”+ 2中。
我得到一个空的“changeArray。”
var array = [1, 2, 3, 4];
function changeArray(array){
var newNums = [];
array.forEach(function(number){
number = number + 2;
console.log(number);
//return(newNums);
});return(newNums);
}changeArray(array);
感谢大家的出色答案。他们真的有帮助。我应该使用.forEach并“返回”新数组。我同意.map会是最好的,但是......非常感谢!!
答案 0 :(得分:5)
Array.map
将成为该工作的合适工具
var array = [1, 2, 3, 4];
var newNums = array.map(x => x + 2);
console.log(newNums);

代码不起作用的原因是因为你无法真正从forEach
返回,你必须在每次迭代中推送到数组
var array = [1, 2, 3, 4];
function changeArray(array) {
var newNums = [];
array.forEach(function(number) {
newNums.push( number + 2 );
});
return newNums;
}
var result = changeArray(array);
console.log(result);

答案 1 :(得分:0)
此任务的正确功能确实是.map()
。
但你仍然可以通过一些修改来使用你的功能。
var array = [1, 2, 3, 4];
function changeArray(inputArray){
var newNums = inputArray.slice();
newNums.forEach(function(number, index){
newNums[index] = number + 2;
});
return(newNums);
}
console.log(changeArray(array));

<强>解释强>
首先,您将changeArray()
编码为始终返回一个空数组。
请参阅var newNums = [];
,然后return(newNums);
。
对forEach()
变量使用array
时。
其次,您应该详细了解forEach()
here。
如果您注意到,我使用.slice()
将inputArray
的值复制到newNums
。
确保inputArray
不被功能修改是一种良好做法。