1. 如何形象地解釋 javaScript 中 map,foreach,rece 間的區別
分別解釋:
map是指把一個集合中的內容映射為另外一個集合(一一映射)
foreEach是指遍歷一個集合
rece是指通過遍歷整個集合把一個集合歸約(歸納)為單個結果
map - rece是一種常見的數據流處理模型
舉例說明:某個游戲中有N個的戰斗單元的集合(如士兵,坦克,戰機等等)
現在通過map把戰鬥力單元的集合映射為一個戰鬥力集合
通過rece把戰鬥力集合歸約為一個總體戰鬥力結果,展示到屏幕的右上角上,表示現在玩家的整體戰鬥力
代碼如下:
varcombatPower=
units
.map(()=>unit.power)
.rece((memo,power)=>{memo+power},0);
combatPower現在就是玩家的整體戰鬥力
2. javascript 如何將Map集合轉換成二維數組
如果要合成二維數組可以試下擴展運算符結合 map
3. javascript模擬map輸出與去除重復項的方法
本文實例講述了javascript模擬map輸出與去除重復項的方法。分享給大家供大家參考。具體方法如下:
1.Javascriptmap輸出
function
Map(){
//
private
var
obj
=
{}
;//
空的對象容器,承裝鍵值對
//
put
方法
this.put
=
function(key
,
value){
obj[key]
=
value
;//
把鍵值對綁定到obj對象上
}
//
size
方法
獲得map容器的個數
this.size
=
function(){
var
count
=
0
;
for(var
attr
in
obj){
count++;
}
return
count
;
}
//
get
方法
根據key
取得value
this.get
=
function(key){
if(obj[key]
||
obj[key]
===
0
||
obj[key]
===
false){
return
obj[key];
}
else
{
return
null;
}
}
//remove
刪除方法
this.remove
=
function(key){
if(obj[key]
||
obj[key]
===
0
||
obj[key]
===
false){
delete
obj[key];
}
}
//
eachMap
變數map容器的方法
this.eachMap
=
function(fn){
for(var
attr
in
obj){
fn(attr,
obj[attr]);
}
}
}
//模擬java里的Map
var
m
=
new
Map();
m.put('01'
,
'abc');
m.put('02'
,
false)
;
m.put('03'
,
true);
m.put('04'
,
new
Date());
//alert(m.size());
//alert(m.get('02'));
//m.remove('03');
//alert(m.get('03'));
m.eachMap(function(key
,
value){
alert(key
+"
:"+
value);
});
2.去除map中重復項
var
arr
=
[2,1,2,10,2,3,5,5,1,10,13];//object
//js對象的特性:在js對象中key是永遠不會重復的
/*
var
obj
=
new
Object();
obj.name
=
'z3';
obj.age
=
20
;
//alert(obj.name);
obj.name
=
'w5';
alert(obj.name);
*/
//
1
把數組轉成一個js的對象
//
2
把數組中的值,變成js對象當中的key
//
3
把這個對象
再還原成數組
//
把數組轉成對象
function
toObject(arr){
var
obj
=
{}
;
//
私有的對象
var
j
;
for(var
i=0
,
j=
arr.length
;
i<j;
i++){
obj[arr[i]]
=
true
;
}
return
obj
;
}
//
把這個對象轉成數組
function
keys(obj){
var
arr
=
[]
;
//
私有對象
for(var
attr
in
obj){
if(obj.hasOwnProperty(attr)){//YUI底層代碼
arr.push(attr);
}
}
return
arr
;
}
//綜合的方法
去掉數組中的重復項
function
uniq(newarr){
return
keys(toObject(newarr));
}
alert(uniq(arr));
希望本文所述對大家的javascript程序設計有所幫助。
4. foreach和map的區別是什麼
foreach和map的3個不同點:
1、map速度比foreach快。
2、map會返回一個新數組,不對原數組產生影響,foreach不會產生新數組。
3、map因為返回數組所以可以鏈式操作,foreach不能。
foreach和map是Javascript常用到的指令。
Javascript產生背景:
JavaScript最初由Netscape的Brendan Eich設計,最初將其腳本語言命名為LiveScript,後來Netscape在與Sun合作之後將其改名為JavaScript。
JavaScript最初受Java啟發而開始設計的,目的之一就是「看上去像Java」。因此語法上有類似之處,一些名稱和命名規范也借自Java。
但JavaScript的主要設計原則源自Self和Scheme。JavaScript與Java名稱上的近似,是當時Netscape為了營銷考慮與Sun微系統達成協議的結果。微軟同時期也推出了JScript來迎戰JavaScript的腳本語言。
發展初期,JavaScript的標准並未確定,同期有Netscape的JavaScript,微軟的JScript和CEnvi的ScriptEase三足鼎立。為了互用性,Ecma國際(前身為歐洲計算機製造商協會)創建了ECMA-262標准(ECMAScript),兩者都屬於ECMAScript的實現。
盡管JavaScript作為給非程序人員的腳本語言,而非作為給程序人員的腳本語言來推廣和宣傳,但是JavaScript具有非常豐富的特性。
1997年,在ECMA(歐洲計算機製造商協會)的協調下,由Netscape、Sun、微軟、Borland組成的工作組確定統一標准:ECMA-262。完整的JavaScript實現包含三個部分:ECMAScript,文檔對象模型,瀏覽器對象模型。
JavaScript是甲骨文公司的注冊商標。Ecma國際以JavaScript為基礎制定了ECMAScript標准。JavaScript也可以用於其他場合,如伺服器端編程(Node.js)。
5. javascript中map集合的問題
回調的函數有一個參數,ajax的結果格式設置為json
success:function(result){
var ids = result["cardlds"];
var nos = result["cardNos"];
}
6. 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了