我一直在寻找一段时间,似乎找不到我面临的问题的答案。我是新人,所以我很有可能只是在做我错误做的事情。我正在做的目的只是为了学习我能做什么,能用对象,数组和循环做什么,以便我按照我想做的事情完成这个项目,我就是这样做的。慢慢弄清楚如何做这些事情。
所以我这里有一堆对象(带键和值)。我将这些单独的(角色)对象存储到另一个名为Characters的对象中。
function Character(sociability, assertiveness, adventurous, emotionalExpressiveness, kindness, altruism, affection, trust, impulseControl, thoughtfullness, emotionalStability, sexuality, evil, intellectualCuriosity, novelty, interests, intelligence) {
"use strict";
this.sociability = sociability;
this.assertiveness = assertiveness;
this.adventurous = adventurous;
this.emotionalExpressiveness = emotionalExpressiveness;
this.kindness = kindness;
this.altruism = altruism;
this.affection = affection;
this.trust = trust;
this.impulseControl = impulseControl;
this.thoughtfullness = thoughtfullness;
this.emotionalStability = emotionalStability;
this.sexuality = sexuality;
this.evil = evil;
this.intellectualCuriosity = intellectualCuriosity;
this.novelty = novelty;
this.interests = interests;
this.intelligence = intelligence;
}
var aloy = new Character(0, 11, 11, 0, 11, 11, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0),
bayonetta = new Character(0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 17, 0, 11, 0, 0),
elizabeth = new Character(0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12),
ellie = new Character(0, 12, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 10),
//store all above objects into new object
var Users = {
aloy: aloy,
bayonetta: bayonetta,
elizabeth: elizabeth,
ellie: ellie,
};
在此之后,我创建一个数组,其中包含Character对象中5个键的名称:
var matchArr = ["sociability", "assertiveness", "adventurous", "emotionalExpressiveness", "kindness"]
这是我所坚持的部分,我会尽力解释它。我会首先向您展示代码,然后尝试理解我想要做的事情。
for (i = 0; i <= 4; i++) {
for (var obj in Users) {
if (Users.obj.matchArr[0] > 1) {
console.log(obj)
}
}
}
我想要做的是遍历Users
对象,如果该对象中的一个对象(Characters
)有一个值满足if
语句的键,记录该Character对象的名称。
- 如果我记录for (var obj in Users) { console.log(obj); }
,我会循环浏览Character
中存储在Users
中的每个matchArr[0]
名称。
- 如果我按其"sociability"
列出{我从matchArr
数组获得Users.aloy.sociability
。
- 如果我记录0
,我会按预期得到aloy.sociability
因为Characters.aloy.matchArr[0]
- 但如果我记录sociability
我收到错误(无法读取属性&#39; 0&#39; of undefined)。我不明白为什么这与明确键入matchArr[0]
不同,因为这是Users.aloy.sociability
的确切值。
如何以我尝试的方式正确引用Users.obj.matchArr[0]
。在我的脑海中,有意义的是,当我引用Users.aloy.sociability
时,它与显式键入matchArr[0] > "sociability"
,Users.bayonetta.sociability`(等等循环)相同。
同样,我可能会发现这完全错误,即使它只是指向我可以阅读的其他文档并获得更好的理解,我可能会感激任何帮助。正确的方向。
我唯一的猜测是数组值(例如Public class A_DTO
{
public string Id {get; set;}
public string Name {get; set;}
}
Public class A_Nav_DTO: A_DTO
{
public ICollection<B> Bs {get; set;}
}
)是一个字符串,我不能这样使用字符串。如果是这样,我不知道该怎么办。
提前感谢你的帮助。
答案 0 :(得分:1)
此循环应该打印字符名称以及字符匹配的属性。
for (var key in Users) {
matchArr.forEach(function(el) {
if (Users[key][el] > 1) {
console.log(key + ' matches attribute of ' + el);
}
});
}
答案 1 :(得分:0)
让我们看看:
//loop each Users
for(character in Users) {
//Loop each matchArr
matchArr.forEach(function(skill) {
//at this point we are testing something like this:
//If Users['aloy']['sociability'] > 1
if(Users[character][skill] > 1) {
//log aloy
console.log(character);
}
}
}