我有一个有玩家的阵列。每个玩家都有自己的名字(array[i].name
)和权力(array[i].power
)。现在我想为每个玩家添加动态成绩。每个年级都应该有自己的分类和分数。
数据结构示例:
array[i].football.shooting=5;
array[i].football.dribbling=3;
我尝试将等级的名称首先推送给每个玩家,然后将类别添加为额外的数组。但是甚至没有.push()像我提到的那样工作:
for (var i = 0; i < array.length; i++) {
array[i].push(gradeName);
}
请有人给我一个提示如何解决这个问题?
非常感谢!
答案 0 :(得分:1)
可能是这样的:
var array = [{
name: 'hello',
power: 1
}, {
name: 'world',
power: 3
}];
var getGrades = function () {
return {
shooting: 5,
dribling: 3
};
}
for (var i = 0; i < array.length; i++) {
array[i].football = [];
array[i].football.push(getGrades());
}
console.log(array);
您还应该发布所需的输出以获得特定答案。
答案 1 :(得分:1)
在JavaScript中,我建议使用数组中的对象 - 我知道你正在做的事情,但看看这样的架构:
var players = [
{
name: "Playername1",
attributes: [
{name: "football", skill_level: { dribbling: 1, passes: 3}},
{name: "basketball", skill_level: {range_shot: 3, passes:1}}
]
}
]
使用该架构,您可以将整个新玩家对象推送到阵列。您还可以遍历属性,检查现有属性,添加缺失属性并编辑当前属性 - &gt;种类繁多。
如果你想在该架构中添加一个属性,那就像:
var newSkill = { name: "flying plane", skill_level: { flight: 4, landing:0 }};
for(var i = 0; i < players.length; i++){
players[i].attributes.push(newSkill);
}
希望这会有所帮助。
<强>更新强>
假设您已通过表单收到用户输入并将其保存到变量userInputName
然后你可以简单地添加一个动态命名的属性:
var newSkill = {name:userInputName,skill_level:{flight:4,landing:0}};
for(var i = 0; i < players.length; i++){
players[i].attributes.push(newSkill);
}
答案 2 :(得分:0)
答案 3 :(得分:0)
根据您的数据结构示例,添加应该是这样的:
var grade = 'footbal';
var category = 'shooting';
var points = 5;
array[i][grade] = array[i][grade] || {};
array[i][grade][category] = points;