JS/Jquery 中怎么定义存储一个类似map中key-value形式的变量,并且怎样动态赋值key和value?

 我来答
vinciTaylor
2018-12-06 · TA获得超过1.1万个赞
知道答主
回答量:73
采纳率:0%
帮助的人:9796
展开全部

注意:在javascript语言中,key的值只能是字符串,不能是其它的。

在javascript中,对象本身就是一种Map结构。

var map = {};
map['key1'] = 1;
map['key2@'] = 2;

console.log(map['key1']);//结果是1.
console.log(map['key2@']);//结果是2.

//如果遍历map 

for(var prop in map){

if(map.hasOwnProperty(prop){

console.log('key is ' + prop +' and value is' + map[prop]);

}

}

动态的赋值key:

var key1 = '动态key1';
var key2 = '动态key2';
var map = {};
map[key1] = 1;
map[key2] = 2;

console.log(map[key1]);//结果是1.
console.log(map[key2]);//结果是2.

//如果遍历map
for(var prop in map){

if(map.hasOwnProperty(prop){

console.log('key is ' + prop +' and value is' + map[prop]); 

}

}

扩展资料

JavaScript是一种脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行。

直译语言的弱点是安全性较差,而且在JavaScript中,如果一条运行不了,那么下面的语言也无法运行。而其解决办法就是于使用try{}catch(){}︰

console.log("a");//这是正确的

console.log("b");//这是正确的

console.logg("c");//这是错误的,并且到这里会停下来

console.log("d");//这是正确的

console.log("e");//这是正确的

/*解决办法*/

try{console.log("a");}catch(e){}//这是正确的

try{console.log("b");}catch(e){}//这是正确的

try{console.logg("c");}catch(e){}//这是错误的,但是到这里不会停下来,而是跳过

try{console.log("d");}catch(e){}//这是正确的

try{console.log("e");}catch(e){}//这是正确的

Javascript被归类为直译语言,因为主流的引擎都是每次运行时加载代码并解译。

V8是将所有代码解译后再开始运行,其他引擎则是逐行解译(SpiderMonkey会将解译过的指令暂存,以提高性能,称为实时编译)。

但由于V8的核心部份多数用Javascript撰写(而SpiderMonkey是C++)。因此在不同的测试上,两者性能互有优劣。

与其相对应的是编译语言,例如C语言,以编译语言编写的程序在运行之前,必须经过编译,将代码编译为机器码,再加以运行。

参考资料来源:百度百科:javascript

帮助_li
2015-07-07 · TA获得超过2140个赞
知道大有可为答主
回答量:1288
采纳率:65%
帮助的人:691万
展开全部
var map={
    key1:'abc',
    key2:'def'
};

这样定义即可。动态赋值如下:

map.key3='12';

如果key也是动态的,则如下处理

var key='key4';
map[key]='34';


注意:在javascript语言中,key的值只能是字符串,不能是其它的。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xuebaotuxi
2014-10-24 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4196
采纳率:85%
帮助的人:1041万
展开全部
亲,定义这样的变量可以定义使用json格式的变量,比如
var map={key1:value1,key2:value2........};
赋值可以
map.key1=..或者map["key1"]=...
marp.key2=...或者map["key2"]=...
追问
但是key值也不是确定的,也是变量。
var map={};
map.push('key1');
map[key1].push('value1'); 可以这样动态的赋值么?
追答
push应该是数组中的方法,json不能用的,你直接var map=new Object();
然后就可以动态添加属性了
比如
map.key1=...
map.key2=..
key1和key2可以随便取什么都可以
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cainiaokan
2014-10-24 · TA获得超过2917个赞
知道小有建树答主
回答量:651
采纳率:66%
帮助的人:610万
展开全部

在javascript中,对象本身就是一种Map结构。

var map = {};
map['key1'] = 1;
map['key2@'] = 2;

console.log(map['key1']);//结果是1.
console.log(map['key2@']);//结果是2.

//如果遍历map
for(var prop in map){
    if(map.hasOwnProperty(prop)){
        console.log('key is ' + prop +' and value is' + map[prop]);
    }
}
追问
我需要动态的赋值key,要怎么做?
追答
var key1 = '动态key1';
var key2 = '动态key2';
var map = {};
map[key1] = 1;
map[key2] = 2;
 
console.log(map[key1]);//结果是1.
console.log(map[key2]);//结果是2.
 
//如果遍历map
for(var prop in map){
    if(map.hasOwnProperty(prop)){
        console.log('key is ' + prop +' and value is' + map[prop]);
    }
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小诗诗aa
2018-03-22
知道答主
回答量:1
采纳率:0%
帮助的人:887
展开全部
//使用 例子
var arr = [{'compyID':'1', 'company':'总公司','name':'smf','order':'985433'},{'compyID':'2365','company':'上海分公司','name':'smf','order':'985433'}];
var arrd = [];
var obj = new Object();
for(var i=0;i<arr.length;i++){
var compyid =arr[i].compyID;
var company =arr[i].company;
/*
//这是错的一种变量赋值,在javascript语言中,key的值只能是字符串,不能是其它的。
obj = {
compyid:company
}
arrd.push(obj);
*/ //应该这样
obj[compyid] = company;

}
alert(JSON.stringify(obj))
var value = obj['1'];
alert(value)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式