⑴ 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了