【发布时间】:2016-04-15 06:09:40
【问题描述】:
forEach 方法不会返回带有值结果的新字符串。
如果我想用forEach重写map方法,我不能使用命令
push.forEach(array,callback).
我正在尝试使用 forEach 方法将数组中的每个元素乘以 2 并将其存储在一个新数组中。我不想要关于使用 map 方法的建议,因为我知道它已经这样做了。
不使用forEach 方法,我的代码如下:
function MultiplyByTwo(num) {
return num * 2;
}
function HostMultiplyByTwo(array,instructions) {
var output = [];
for (i=0;i<array.length;i++) {
output.push(instructions(array[i]))
}
return output;
}
var endresult = HostMultiplyByTwo([1,2,3],MultiplyByTwo)
如果forEach 函数如下所示:
function forEach(array, callback) {
for (var i =0;i<array.length;i++) {
var result = callback(array[i])
}
return result;
}
现在我希望能够使用forEach 方法运行HostMutiplyByTwo。这是我尝试过的。
function HostMultiplyByTwo(array,instructions) {
var output = [];
forEach(array,instructions) {
output.push(result)
}
return output;
}
var endresult = HostMultiplyByTwo([1,2,3],MultiplyByTwo)
由于某种原因,这显然不起作用。我知道forEach 方法只是遍历第一个参数并在第一个参数的第二个参数中执行函数。
- 之后它会在某处存储该操作的结果吗?
- 有没有一个地方可以让我看到我的浏览器使用的实际内置函数“forEach”,因为我无法找到它的确切定义?
- 我不能使用 push.forEach(array,instruction)。
- 假设我有一个名为“freeze”的数组。是否需要“冻结”,对“冻结”中的每个元素执行操作,然后将这些操作的结果保存回“冻结”?
- 我这样做是因为我想练习使用闭包和回调函数。我知道 map 在对每个元素执行函数后会返回一个数组,但我不明白如何使用
forEach执行此操作。 - 我在网上看到您可以使用“this.forEach”,但我无法理解计算机如何解释“this”。
非常感谢任何帮助。
【问题讨论】:
-
FWIW,你已经自己重新实现了
map。您的HostMultiplyByTwo()实际上是map的简单版本。虽然它没有实现 ECMAscript 标准规定的map的所有功能,但它类似于其他语言中的map函数。
标签: javascript loops dictionary asynchronous foreach