2016-07-13 3 views
0

Я был в тупике с этим некоторое время. В принципе, у меня есть массив объектов (фокусировка только на объекте «00» на данный момент), и я хочу, чтобы сгруппировать свойства bestScore, как это:Разделение каждого другого свойства Javascript внутри объекта внутри массива

..

Группа пользователя

яблоко

..

Группа пользователя

банан,

Карамболь

..

Группа пользователя

помидор

..

Вот код, который я до сих пор ... Я новичок в этом, так что я Я немного в тупике.

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) 
    } 
}; 

Если у кого-нибудь есть идеи, как это решить, я был бы очень благодарен.

спасибо.

+1

вы знаете, какие функции? – madalinivascu

+0

Собственно, да. Я использую один в своем действительном коде. Я просто отправляю супер упрощенную версию кода, чтобы выяснить, что *, чтобы положить в функцию. Так что не нужно грубить. – zed

ответ

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(", ")); 
 
}

0

Благодаря Ито, это наряду с использованием UnderscoreJS GroupBy с игровым моей функцией сделали трюк! Я не уверен, как официально «решить» этот вопрос, чтобы вы получили кредит на свою помощь, но похоже, что я все настроен.

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(", ")); 
 
}

Смежные вопросы