Javascript映射变量
Javascript map variable
我希望在JavaScript中实现c++地图变量类型,但在互联网上看不到任何东西。当我使用SFML时,我创建了一个String类型的std::map和SFML::Texture,这样我就可以在map中存储纹理,并通过使用键获得纹理值,我该如何将其实现到JavaScript中?
我想这样做的原因是我想在HTML5游戏开始时加载所有图像资源,然后我可以调用图像映射并使用键获取图像引用。JavaScript的标准方式就是一个对象:
var map = {};
map["any key you like"] = any_value_you_like;
// Also:
map.any_name_you_like_that_fits_identifer_name_rules = any_value_you_like;
键总是字符串(目前,ES6将添加符号/名称键),值是任何JavaScript值。当你使用点表示法(obj.foo
)时,属性名是一个文字(并且受JavaScript的IdentifierName规则的约束);当您使用括号表示法和字符串(obj["foo"]
)时,属性名可以是任何东西(并且可以是任何表达式的结果,例如变量查找)。
示例:Live Copy
var map = {};
map["a"] = "alpha";
map["b"] = "beta";
map["c"] = "gamma";
["a", "b", "c"].forEach(function(key) {
display("map['" + key + "'] = " + map[key]);
});
输出:map['a'] = alphaMap ['b'] = betaMap ['c'] = gamma
dandavis提出了一个有趣的观点:当你通过{}
创建一个对象时,它继承了Object.prototype
的属性,但从ES5开始,你可以使用Object.create(null)
,这不是:
var map = Object.create(null);
map["any key you like"] = any_value_you_like;
// Also:
map.any_name_you_like_that_fits_identifer_name_rules = any_value_you_like;
这样,如果您碰巧有像toString
或valueOf
这样的名称的键(它们在Object.prototype
上)的可能性,那么当您在没有显式设置它们的对象上查找它们时,您将不会得到误报。
现在可以使用Map
数据结构了。它是通过ES6引入JavaScript的,允许创建键值对的集合。与对象不同,映射对象可以同时保存对象和原语作为键和值。下面是示例:
const items = new Map();
// add items
items.set(' ', 'Dog');
items.set(' ', 'Eagle');
items.set(' ', 'Train');
items.set(45, 'Number');
items.set(true, 'Boolean');
// iterate over map
for (const [key, value] of items) {
console.log(`${key}: ${value}`);
}
输出: : Dog
: Eagle
: Train
45: Number
true: Boolean
更多示例
相关文章:
- 从另一个 cpp 文件更改结构内、映射键内的变量
- 如果包含映射的静态库与可执行文件和动态库链接,静态映射(变量)是否会被多次释放?
- C++预处理会生成变量成员、资源库和映射
- gdb映射显示不正确的成员变量
- 如何常量映射变量
- C++映射:创建一个临时变量或每次使用键访问值会更快吗
- program_options变量映射更改参数
- C++将一组整数变量映射到值的有效方法
- 打印出映射键值,其中键是结构变量 c++
- 其中是在以下程序中创建的用于映射初始化的临时变量
- C++如何声明映射变量
- 如何在一个无序映射中存储2个以上的变量
- 将QWidget映射到变量
- 语法错误:html 映射文件中的解析错误 - ogmaps 引用错误:找不到变量:GUnload
- 要迭代的成员变量的映射
- 映射多变量/层系统的泛化
- 从变量映射键和值初始化
- 使用变量参数映射函数并通过字符串 c++ 调用
- 将实例变量类型映射到模板成员函数
- 检查 C++ 中的空静态映射变量