map
函数看起来比for
循环要好得多:
var arr = ["Apple", "Orange"];
// map example
arr.map(function(item){ eat(item); });
// for example
for(var i=0; i<arr.length; i++){
eat(arr[i]);
}
我希望map
超过for
,但是:
map
成为参数的函数应该有一个返回值,以减少为map
应该返回的数组。将viod函数传递给map
有什么影响,就像在我的例子中一样?map
返回一个数组。如果我不将它分配给变量会发生什么,比如我的例子?map
答案 0 :(得分:2)
一个函数,map作为参数应该有一个返回值,减少到一个应该返回map的数组。将viod函数传递给地图有什么影响,比如我的例子?
没有return语句的函数返回的值是undefined
。因此,如果传递一个永远不会返回任何内容的函数来映射,它将创建一个长度等于原始数组的新数组,每个值为undefined
。
map返回一个数组。如果我不将它分配给变量会发生什么,比如我的例子?
仍然会创建一个数组,但它会在创建后立即丢弃并很快收集垃圾。这种行为可能会被JS引擎优化掉!
是否有像地图一样的虚函数?
正如其他人所指出的,有Array.prototype.forEach
函数迭代数组(类似于map)但不创建新数组或以任何方式使用与之关联的回调结果。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
答案 1 :(得分:1)
您正在寻找.forEach()
。
您可能会发现,浏览MDN documentation是积累此类信息的更好方式,而不是提问。至少现在我希望这个答案可以减轻你的痛苦。
编辑 - 对于问题1,它不会伤害任何东西。 .map()
函数将构建一个包含undefined
条目的数组。 (我想。)
对于2,它也没关系。忽略函数的返回值永远不是问题,至少就运行时而言。
答案 2 :(得分:1)
<强> 1。一个函数,map作为参数应该有一个返回值,减少到一个应该返回的数组。将viod函数传递给地图有什么影响,比如我的例子?
var numbers = [1, 4, 9];
var mapped = numbers.map(function(){
//do nothing
});
console.log(numbers);//[1, 4, 9]
console.log(mapped);//[undefined, undefined, undefined]
初始数组将保持不变,您将得到一个带有未定义数组的数组
2。 map返回一个数组。如果我不将它分配给变量会发生什么,比如我的变量 例如吗
什么都会发生,你松开了改变过的数组。
3.是否有像地图一样的无效功能?
所有数组方法都不会修改引用数组, EG
Array.concat(value1[value2[value...]])
Array.every(function)
Array.filter(function)
Array.forEach(function)
Array.join(delimeter)
Array.indexOf(searchStr[, startIndex])
Array.lastIndexOf(searchStr[, startIndex])
Array.map(function) .... etc
但Array.splice(), push, pop, shift, unshift,.. etc
会改变
答案 3 :(得分:0)
您正在寻找的是forEach
method。
var arr = ["Apple", "Orange"];
arr.forEach(eat);
答案 4 :(得分:0)
有forEach数组实例方法。