我已经被这一段时间困扰了。基本上,我有一个对象数组(暂时仅关注“00”对象),我想将bestScore属性组合在一起,如下所示:
...
用户组
苹果
...
用户组
香蕉,
杨桃
...
用户组
番茄
...
这是我到目前为止的代码......我是新手,所以我有点难过。
var playerBatch = new Array();
playerBatch["00"] =
[
{userName: "apple", bestScore: "10"}
{userName: "banana", bestScore: "20"}
{userName: "starfruit", bestScore: "20"}
{userName: "tomato", bestScore: "30"}
];
var batch = "00";
for (i=0; i < playerBatch[batch].length; i++) {
if (playerBatch[batch][i].bestScore == "10") {
document.write("User Group")
document.write(playerBatch[batch][i].userName)
}
};
如果有人对如何解决这个问题有任何想法,我将非常感激。
谢谢。
答案 0 :(得分:0)
编辑:看起来您在示例中缺少的是playerBatch["00"]
中对象之间的逗号。在你进入分类工作之前,这会破坏整个事情。
为了对多个结果进行分组,您需要在调用document.write()
之前缓存/存储所有匹配项(可能在本地范围的数组中)。
...如果要按bestScore
列出所有组,则必须循环遍历数组以构建可能bestScore
值的列表(数组),然后 使用类似你已编写的代码来循环使用它。
也就是说,你可能想要按下你正在写入文档的(输出)字符串 - 在“用户组”和结果匹配之间添加空格,控制换行符,或用语义HTML包装字符串。根据完成的布局的复杂程度,使用Handelbars甚至Nano (templates)等模板库可能会受益。
var playerBatch = new Array();
playerBatch["00"] = [{
userName: "apple",
bestScore: "10"
}, {
userName: "banana",
bestScore: "20"
}, {
userName: "starfruit",
bestScore: "20"
}, {
userName: "tomato",
bestScore: "30"
}];
var batch = "00",
groupArray = [];
for (i = 0; i < playerBatch[batch].length; i++) {
if (playerBatch[batch][i].bestScore == "20") {
groupArray.push(playerBatch[batch][i].userName)
}
};
if( groupArray.length ){
document.write( "User Group: " );
document.write( groupArray.join( ", " ) );
}
答案 1 :(得分:0)
谢谢伊藤,这与使用UnderscoreJS的groupBy一起使用我的功能就行了!我不确定如何正式解决&#39;这个问题让你得到了帮助,但看起来我已经完成了所有的设置。
var playerBatch = new Array();
playerBatch["00"] = [{
userName: "apple",
bestScore: "10"
}, {
userName: "banana",
bestScore: "20"
}, {
userName: "starfruit",
bestScore: "20"
}, {
userName: "tomato",
bestScore: "30"
}];
var batch = "00",
groupArray = [];
for (i = 0; i < playerBatch[batch].length; i++) {
if (playerBatch[batch][i].bestScore == "20") {
groupArray.push(playerBatch[batch][i].userName)
}
};
if( groupArray.length ){
document.write( "User Group: " );
document.write( groupArray.join( ", " ) );
}
&#13;