循环中的动态变量名
Dynamic variable name in loop
我需要在js中创建动态变量名
var counter = 0;
for(i=0; i<location.length; i++) {
...
var "marker_" + counter = new google.maps.Marker({
但是当我期望有变量marker_0,marker_1,marker_2,…我有这个错误
Error: SyntaxError: missing variable name
Source Code:
var "marker_" + counter = new google.maps.Marker({
使用数组
var marker = [];
for (i=0; i < location.length; i++) {
marker[counter] = new google.maps.Marker({
好吧,"使用数组"无疑是正确的答案,但是如果你真的想要动态变量,你需要决定它们的范围-默认是window
,然后你可以这样做:
var counter = 0;
for(i=0; i<location.length; i++) {
...
window["marker_" + counter] = new google.maps.Marker({
现在可以用相同的方括号符号
来访问window["marker_0"]...
或点符号
window.marker_0
既然这个问题被用作重复的目标:
如果要访问的信息是数字关键字,建议使用数组。如果不是,您有两个选项:使用对象和动态属性访问
使用
Map
(ES2015+)
使用对象
你可以使用字符串(或者,在ES2015+中,符号)通过括号表示法访问对象属性,所以你可以在对象中存储信息,以便以后使用字符串/符号访问:
var theData = Object.assign(Object.create(null), {
x: "ecks",
y: "why"
});
var key = Math.random() < 0.5 ? "x" : "y";
console.log("key = " + key + ", theData[key] = " + theData[key]);
使用Map
你可以使用Map而不是对象,即使字符串或符号作为键,但与对象不同的是,Map键可以是任何JavaScript值(除了负0,但是,嘿,足够好了):
const theData = new Map([
["x", "ecks"],
["y", "why"]
]);
const key = Math.random() < 0.5 ? "x" : "y";
console.log("key = " + key + ", theData.get(key) = " + theData.get(key));
这个例子使用了字符串,但是Map键可以是任何类型。Map键甚至可以是对象
相关文章:
- 在Javascript中连接一个动态变量名
- 动态变量名语法
- 动态jQuery变量名
- 使用动态变量名更新JSON中的结果
- 在JavaScript中循环使用动态变量名
- jQuery在for循环中动态递增变量名
- Javascript调用函数-动态变量名
- 如何在ExtJS中创建动态数组变量名
- for循环中的动态变量名
- Javascript:动态变量名与php
- 通过动态名称更新本地变量名
- 动态JavaScript变量名
- 如何在循环中创建动态变量名
- JavaScript的动态变量名-两个数组
- 如何动态地以点表示法呈现变量名
- Angular中的动态作用域变量名
- 在javascript中动态声明变量名
- 动态变量名,避免eval()
- JS/AngularJS:动态创建变量名
- 从变量名动态创建变量