⑴ javaScript中数组的遍历(map,forEach)
在JavaScript中,数组的遍历主要依赖于map()和forEach()函数。这两种方法在处理数组元素时,有着明显的不同。
map()函数用于循环遍历数组,并对每一个元素执行指定的函数,然后返回一个新数组,原数组不会改变。在使用时,map()函数接受一个函数作为参数,该函数对数组中的每一个元素执行一次。在这个函数中,参数val表示数组元素的值,index表示当前元素的索引,arr表示整个数组。
而forEach()函数则是用于遍历数组,但它不返回任何新值。它执行一个为每个数组元素调用一次的回调函数。在forEach()函数中,参数val、index和arr分别代表数组元素的值、元素的索引和数组本身。
在用法上,对于forEach()函数,可以使用如下格式:a.forEach(function(val,index,arr){})。而对于map()函数,其格式为:a.map(function(val,index,arr){})。这里的a代表数组。
总结来说,map()和forEach()都用于遍历数组,但它们的功能和用法存在明显的区别。map()返回一个包含修改后元素的新数组,而forEach()则不返回数组,仅执行回调函数。在实际开发中,应根据具体需求选择合适的方法进行数组遍历操作。
⑵ javascript map遍历之后返回的数组是深拷贝吗
是深拷来贝,返回的是一个全新的自数组,与原来的数组并存。
比如:
js">vara=[1,2,3];
varb=a.map(function(currentValue,index,arr){
returncurrentValue*2;
});
console.log(a);
console.log(b);
分别输出[1, 2, 3]和[2, 4, 6]。
JS中绝大多数函数都是属于深拷贝的,一般不会对原对象执行操作,而是将处理结果通过返回值返回的。
⑶ 原生JS forEach和map遍历的区别以及兼容写法
一、原生JS forEach()和map()遍历
共同点:
1.都是循环遍历数组中的每一项。
2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前项的索引index,原始数组input。
3.匿名函数中的this都是指Window。
4.只能遍历数组。
1.forEach()
没有返回值。
[javascript] view plain
var ary = [12,23,24,42,1];
var res = ary.forEach(function (item,index,input) {
input[index] = item*10;
})
console.log(res);//-->undefined;
console.log(ary);//-->会对原来的数组产生改变;
2.map()
有返回值,可以return 出来。
[javascript] view plain
var ary = [12,23,24,42,1];
var res = ary.map(function (item,index,input) {
return item*10;
})
console.log(res);//-->[120,230,240,420,10];
console.log(ary);//-->[12,23,24,42,1];
兼容写法:
不管是forEach还是map在IE6-8下都不兼容(不兼容的情况下在Array.prototype上没有这两个方法),那么需要我们自己封装一个都兼容的方法,代码如下:
[javascript] view plain
/**
* forEach遍历数组
* @param callback [function] 回调函数;
* @param context [object] 上下文;
*/
Array.prototype.myForEach = function myForEach(callback,context){
context = context || window;
if('forEach' in Array.prototye) {
this.forEach(callback,context);
return;
}
//IE6-8下自己编写回调函数执行的逻辑
for(var i = 0,len = this.length; i < len;i++) {
callback && callback.call(context,this[i],i,this);
}
}
[javascript] view plain
/**
* map遍历数组
* @param callback [function] 回调函数;
* @param context [object] 上下文;
*/
Array.prototype.myMap = function myMap(callback,context){
context = context || window;
if('map' in Array.prototye) {
return this.map(callback,context);
}
//IE6-8下自己编写回调函数执行的逻辑
var newAry = [];
for(var i = 0,len = this.length; i < len;i++) {
if(typeof callback === 'function') {
var val = callback.call(context,this[i],i,this);
newAry[newAry.length] = val;
}
}
return newAry;
}
⑷ javascript怎么遍历map
var map = new HashMap();
map.put("a","1");
map.put("b","2");
遍历:
var key = map.keySet();
for (var i in key){
alert(map.get(key[i]));
}
注:js 中使用map,要先导入一个HashMap.js文件
没要求,引入这内个文件之后容,可以直接使用hashmap了