Kir*_*ran 55 javascript dictionary map
我想在javascript中创建一个字典,如下所示:
myMappings = [
{ "Name":10%},
{ "Phone":10%},
{ "Address":50%},
{ "Zip":10%},
{ "Comments":20%}
]
Run Code Online (Sandbox Code Playgroud)
我想稍后填充一个html表,并希望将表的标题设置为myMappings的第一列,将列的宽度设置为第二列.因为我是JS的新手,无法找到干净的方式.有人会建议吗?
谢谢
Dav*_*ang 66
我看到的主要问题是,为了填充表格,很难循环.
只需使用数组:
var myMappings = [
["Name", "10%"], // Note the quotes around "10%"
["Phone", "10%"],
// etc..
];
Run Code Online (Sandbox Code Playgroud)
......简化了访问:
myMappings[0][0]; // column name
myMappings[0][1]; // column width
Run Code Online (Sandbox Code Playgroud)
或者:
var myMappings = {
names: ["Name", "Phone", etc...],
widths: ["10%", "10%", etc...]
};
Run Code Online (Sandbox Code Playgroud)
访问:
myMappings.names[0];
myMappings.widths[0];
Run Code Online (Sandbox Code Playgroud)
小智 65
另一种方法是拥有一个对象数组,每个单独的对象保存一列的属性.这稍微改变了"myMappings"的结构,但使其易于使用:
var myMappings = [
{ title: "Name", width: "10%" },
{ title: "Phone", width: "10%" },
{ title: "Address", width: "50%" },
{ title: "Zip", width: "10%" },
{ title: "Comments", width: "20%" }
];
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用for循环轻松遍历所有"列":
for (var i = 0; i < myMappings.length; i += 1) {
// myMappings[i].title ...
// myMappings[i].width ...
}
Run Code Online (Sandbox Code Playgroud)
Jas*_*son 21
您是否尝试使用JSON对象?
var myMappings = { "name": "10%", "phone": "10%", "address": "50%", etc.. }
Run Code Online (Sandbox Code Playgroud)
要访问:
myMappings.name;
myMappings.phone;
etc..
Run Code Online (Sandbox Code Playgroud)
Jan*_*nen 18
从技术上讲,对象是adictionary.
var myMappings = {
mykey1: 'myValue',
mykey2: 'myValue'
};
var myVal = myMappings['myKey1'];
alert(myVal); // myValue
Run Code Online (Sandbox Code Playgroud)
你甚至可以循环使用一个.
for(var key in myMappings) {
var myVal = myMappings[key];
alert(myVal);
}
Run Code Online (Sandbox Code Playgroud)
没有理由重新发明轮子.当然,任务如下:
myMappings['mykey3'] = 'my value';
Run Code Online (Sandbox Code Playgroud)
并包含关键字:
if (myMappings.hasOwnProperty('myKey3')) {
alert('key already exists!');
}
Run Code Online (Sandbox Code Playgroud)
我建议你按照这个http://javascriptissexy.com/how-to-learn-javascript-properly/
尝试:
var myMappings = {"Name":"10%",
"Phone":"10%",
"Address":"50%",
"Zip":"10%",
"Comments":"20%"}
//access like this
myMappings["Name"] //returns "10%"
myMappings.Name //same thing as above
//to loop through...
for(var title in myMappings){
//do whatever with myMappings[title]
}
Run Code Online (Sandbox Code Playgroud)
编辑>>好消息,这里现在是一个更简单,原生和更有效的方式来模拟JS中的字典: 还利用JS弱键入.而是类型推断.无论如何..
这是如何(谷歌Chrome控制台的摘录):
var myDict = {};
myDict.one = 1;
1
myDict.two = 2;
2
if (myDict.hasOwnProperty('three'))
{
console.log(myDict.two);
}
else
{
console.log('Key does not exist!');
}
Key does not exist! VM361:8
if (myDict.hasOwnProperty('two'))
{
console.log(myDict.two);
}
else
{
console.log('Key does not exist!');
}
2 VM362:4
Object.keys(myDict);
["one", "two"]
delete(myDict.two);
true
myDict.hasOwnProperty('two');
false
myDict.two
undefined
myDict.one
1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
155678 次 |
| 最近记录: |