变量的 JavaScript 增量名称
javascript increment name of variable
本文关键字:JavaScript 变量 更新时间:2023-09-26
我从数据库中得到一个包含部分匹配结果的对象。
[Object { home1=4, away1=3, home2=4, away2=5, home3=6, away3=7, home4=6, away4=5, home5=3, away5=6}]
Home1 这是主队第一部分的结果,客场1->客队,主场2 这是主队第二部分的结果...等等
等等在我的例子中,数据是我从数据库中获得的每一行。在行中,我有 td 与类:home1、home2、home3、away1、away2,并且有匹配的相应部分的值。我想检查值是否等于我从数据库中得到的值。像这样的东西
if ($('.home1') === data[index].home1;
if($('.away2') === data[index].away2;
应该有一些循环。我不知道该怎么做,我想到了一个数组
var array = [
{
home1: data[index].home1,
away1: data[index].away1
},
{
home2: data[index].home2,
away2: data[index].away2
},
{
home3: data[index].home3,
away3: data[index].away3
},
{
home4: data[index].home4,
away4: data[index].away4
},
{
home5: data[index].home5,
away5: data[index].away5
}
]
然后是 for 循环:
for(var X=0; X<5;X++){
homeX == data[index].homeX
}
如何通过评估函数递增变量名称? 还是有其他解决方案?我很困惑。
可以使用运算符 [] 访问对象属性:
for(var i=0; i<array.length; i++)
{
var item = array[i];
var homePropertyName = 'home' + (i+1);
//now you can access homeX property of item using item[homePropertyName]
//e.g. item[homePropertyName] = data[index][homePropertyName]
}
也许你应该使用一些不同的结构,这可能更适合你的需求,像这样:
array = [
0: array [
"home": "Text for home",
"away": "Text for away"
],
1: array [
"home": "",
"away": ""
]
// More sub-arrays here
];
你也可以用一个 for 循环来初始化它:
var array = new Array();
var i;
for (i = 0; i < 4; i++) {
array[i] = [
"home": "",
"away": ""
];
}
或者像这样:
array[0]["home"] = "Text for home";
array[0]["away"] = "Text for away";
您也可以将此结构用于数据数组,然后使用 for 循环遍历它们(例如,如果您希望找到一个元素):
var result = NULL;
for (i = 0; i < array.length; i++) {
if ( (array[i]["home"] == data[index]["home"]) &&
(array[i]["away"] == data[index]["away"])
) {
// Found matching home and away
result = array[i];
break;
}
}
if (result != NULL) {
alert("Found match: " + result["home"] + " - " + result["away"]);
}
else {
alert("No match");
}
PS:代码没有经过测试,如果有问题,请告诉我。
您可以通过这样的窗口对象(小提琴)访问浏览器中的全局属性:
value1 = "ONE";
alert( window['value'+1] );
但这不是好的设计。您应该研究如何正确格式化 JSON 对象。
我有这样的东西:
for(var i=0; i<2; i++)
{
var item = ARR[i];
for(var x=0;x<5;x++){
var hPropertyName = 'home_p' + (x+1);
var aPropertyName = 'away_p' + (x+1);
item[hPropertyName] = ARR[i][hPropertyName];
item[aPropertyName] = ARR[i][aPropertyName];
}
当我创建一个数组时,它可以工作:
var ARR = [
{
home_p1: 4,
away_p1: 5,
home_p2: 8,
away_p2: 9,
home_p3: 2,
away_p3: 1,
home_p4: 5,
away_p4: 3,
home_p5: 3,
away_p5: 2
},
{
home_p1: 6,
away_p1: 1,
home_p2: 1,
away_p2: 2,
home_p3: 3,
away_p3: 4,
home_p4: 5,
away_p4: 6,
home_p5: 3,
away_p5: 2
}
];
但我不必创建一个数组,因为我必须处理从数据库获取的对象:
[Object { event_id=19328, home_result=3, away_result=2, home_p1=4, away_p1=3, home_p2=1, away_p2=2 ...... }]
我只对这些参数感兴趣 --> home_p , away_p我想把它推到我的阵列上,看起来像 ARR。我想我应该将我得到的对象转换为数组
如果您使用字符串名称作为属性,那么您可以尝试使用模板文字吗?
var someObject = {}
for(let i=0 ; i<values.length ; i++){
someObject[`home${i+1}`] = values[i];
}
如果你需要它是 ES5,你可以使用字符串连接。下面是一个工作示例:
values = [1,2,3,4,5];
let someObject = {};
for(let i=0 ; i<values.length ; i++){
someObject[`value${i+1}`]=values[i];
}
console.log(someObject.value1);
console.log(someObject.value2);
console.log(someObject.value3);
console.log(someObject.value4);
console.log(someObject.value5);
相关文章:
- 将函数的上下文应用于javascript变量
- 如何通过ajax刷新JSF填充的javascript变量
- Javascript变量赋值|
- 限制javascript变量的最小/最大整数
- 来自文本输入null的html javascript变量
- 访问jsrender模板中的全局javascript变量并更新它
- 从数据库中获取数据并插入JavaScript变量
- 如何将javascript变量传递到Meteor Spacebars模板中
- 将JavaScript变量保存到Rails模型
- 在if语句下的html中使用javascript变量
- Javascript变量分配-按类别
- 操作javascript变量[HTML]以只显示文本
- 无法比较javascript变量
- 如何将smarty变量与javascript变量进行比较
- 如何使用PHP将javascript变量添加到mysql数据库中
- Javascript 变量使用 jquery 查找变量
- 重新加载页面时Javascript变量发生变化
- 在asp classic中使用javascript变量
- 全局Javascript变量变为null
- 如何向服务器端提交javascript变量