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了