在数组中的对象内分隔每个不同的Javascript属性

时间:2016-07-13 10:20:07

标签: javascript jquery html

我已经被这一段时间困扰了。基本上,我有一个对象数组(暂时仅关注“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)
    }
};

如果有人对如何解决这个问题有任何想法,我将非常感激。

谢谢。

2 个答案:

答案 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;这个问题让你得到了帮助,但看起来我已经完成了所有的设置。

&#13;
&#13;
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;
&#13;
&#13;