[英]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 键可以是任何 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 键甚至可以是一个对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.