JavaScript:将数组中的值赋值给另一个变量
我想用数组中的值('contentStrings')填充一系列字符串(beijingString,belingString等);所以没有必要这样做:JavaScript:将数组中的值赋值给另一个变量
beijingString = 'five strings';
berlinString = 'similar but different five strings';
bronxString = 'also similar but different five strings';
buenosairesString = 'similar again but subtly different five strings';
最后我有40个这样的字符串填充。
我试着把城市的字符串变量名放入第二个数组(城市),并循环遍历,分配索引值。
但它不起作用。
我需要以某种方式将每个变量作为“城市”数组的元素“引用”(?)吗?
TIA!
完整的代码片段:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
var beijingContentString = '';
var berlinContentString = '';
var bronxContentString = '';
var buenos_airesContentString = '';
var contentStrings = [
['http://www.beijing.com',
'Beijing title',
'<img src="./images/beijing.jpg">',
'Beijing caption',
'Beijing description'
],
['http://www.berlin.com',
'Berlin title',
'<img src="./images/berlin.jpg">',
'Berlin caption',
'Berlin description'
],
['http://www.bronx.com',
'Bronx title',
'<img src="./images/Bronx.jpg">',
'Bronx caption',
'Bronx description'
],
['http://www.buenosaires.com',
'Buenos Aires title',
'<img src="./images/Buenos Aires.jpg">',
'Buenos Aires caption',
'Buenos Aires description'
]
];
var beijingString = '';
var berlinString = '';
var bronxString = '';
var bueonosairesString = '';
alert ('before: ' + beijingString);
alert ('before: ' + berlinString);
alert ('before: ' + bronxString);
alert ('before: ' + bueonosairesString);
var cities = [beijingString, berlinString, bronxString, bueonosairesString];
var contentArrayLoop = 0;
for (contentArrayLoop = 0; contentArrayLoop < 4; contentArrayLoop++) {
cities[contentArrayLoop]=
contentStrings[contentArrayLoop][0] +
contentStrings[contentArrayLoop][1] +
contentStrings[contentArrayLoop][2] +
contentStrings[contentArrayLoop][3] +
contentStrings[contentArrayLoop][4]
;
alert(cities[contentArrayLoop]);
};
alert ('after: ' + beijingString);
alert ('after: ' + berlinString);
alert ('after: ' + bronxString);
alert ('after: ' + bueonosairesString);
</script>
</body>
</html>
一个更好的例子是在这里: http://jsfiddle.net/L1dpt0bs/1/
你不需要使用任何静态数组的城市。
var contentArrayLoop = 0;
for (contentArrayLoop = 0; contentArrayLoop < 4; contentArrayLoop++) {
var city = contentStrings[contentArrayLoop][1]
city = city.substring(0, city.indexOf(' '));
window[city + 'string'] = contentStrings[contentArrayLoop].join('');
};
alert ('after: ' + Beijingstring);
alert ('after: ' + Berlinstring);
alert ('after: ' + Bronxstring);
alert ('after: ' + Bueonosairesstring);
您可以使用动态变量的概念
var cities = ['beijing', 'berlin', 'bronx', 'bueonosaires'];
var contentArrayLoop = 0;
for (contentArrayLoop = 0; contentArrayLoop < 4; contentArrayLoop++) {
window[cities[contentArrayLoop] + 'string'] =
contentStrings[contentArrayLoop][0] +
contentStrings[contentArrayLoop][1] +
contentStrings[contentArrayLoop][2] +
contentStrings[contentArrayLoop][3] +
contentStrings[contentArrayLoop][4]
;
};
alert ('after: ' + beijingstring);
alert ('after: ' + berlinstring);
alert ('after: ' + bronxstring);
alert ('after: ' + bueonosairesstring);
全部代码是在这里:
masum7,谢谢!在你给出的两个例子的每一个中,是否有可能避免_window [] _部分:我只想填充这些变量 - 而不是真正显示它们...稍后在我的代码中出现? – marksealey 2014-09-05 02:07:56
对于作业你需要使用.. 但是,当你将使用它,你不需要使用窗口..这只是一次.. – masum7 2014-09-05 02:11:51
另请检查我给出的其他答案..总动态一。那一个更好 – masum7 2014-09-05 02:12:12
这不是你的所有数据,但是您可以使用这种格式轻松访问信息:
var oContentObj =
{
buenos_airesContent :
{
url : 'http://www.buenosaires.com',
title : 'Buenos Aires title',
img : '<img src="./images/Buenos Aires.jpg">',
caption : 'Buenos Aires caption',
dsc : 'Buenos Aires description'
}
}
来遍历对象的属性,使用for ... in循环:
for (var oCity in oContentObj)
{
// now you have a loop of the cities.. do stuff
for (var oProp in oCity)
{
// Now you have the properties of the city.. do more stuff
}
}
或者你可以调用的属性直接
oContentObj["CityName"]["CityProp"];
// or
oContentObj.CityName.CityProp;
而对于更大处理客户端数据的图片,
that object can become much more than a container。
它也可以控制处理数据。包含,显示,修改和运输,如果需要的话。 :d
Brett,谢谢!我确实想过这样的对象。我仍然可以循环访问数据来填充连续的对象,而不需要单独分配线条和线条吗? – marksealey 2014-09-05 02:10:12
是的,但是通过这个对象,您可以循环通过它中的项目,如果你需要做一个[for .. in](http://*.com/questions/684672/loop-through-javascript-object)循环或者你可以通过nae调用属性如果你需要这样做。我喜欢它比任何一个阵列都好。此时,您甚至可以开始在对象上放置函数并使其自行控制,为您提供所需的数据并修改或显示它,甚至可以返回属性或值的列表。 – 2014-09-05 03:18:40
[这是我处理特定javascript模块的模式。它还不完美,但该组织在几乎任何形状下都能很好地处理客户端功能。](http://*.com/questions/3750082/javascript-oop-best-practices/13074081#13074081) – 2014-09-05 03:21:54
你可以把它变成一个对象吗? – 2014-09-05 00:49:50