Допустим, у меня есть этот массив кинорежиссеров:динамически добавлять значения и сортировки объектов JavaScript
var directors = ['Woody Allen', 'Woody Allen', 'Clint Eastwood', 'Quentin Tarantino', 'Robert Rodriguez', 'Woody Allen', 'Steven Soderberg', 'Robert Rodriguez, Quentin Tarantino' ];
PHP-print_r в Арай будет выглядеть следующим образом:
Array
(
[0] => Woody Allen
[1] => Woody Allen
[2] => Clint Eastwood
[3] => Quentin Tarantino
[4] => Robert Rodriguez
[5] => Woody Allen
[6] => Steven Soderberg
[7] => Robert Rodriguez, Quentin Tarantino
)
Что я хотел бы для этого нужно перебирать массив и создавать новый ассоциативный массив с именем в качестве ключа и количеством раз, которое оно появляется в массиве как значение. Кроме сортировки массива после значения высокий первый, так что конечный результат будет, как tihs:
Array
(
[Woody Allen] => 3
[Robert Rodriguez] => 2
[Quentin Tarantino] => 2
[Steven Soderberg] => 1
[Clint Eastwood] => 1
)
Я не эксперт по JavaScript, но если я хотел бы сделать это в PHP я хотел бы сделать так:
Пробовал много способов сделать то же самое в JavaScript, но так как ассоциативные массивы не существуют одинаково в JS, у меня были проблемы som, чтобы заставить его работать. Моя лучшая попытка была этот код, но он не делает то, что я хочу:
function add2array(a,v){
if(a[v] != null){
a[v] = a[v]+1;
}else{
a[v] = 1;
}
}
$.each(directors, function(k, v){
if(v.indexOf(",") != -1){
dirs = v.split(",");
$.each(dirs, function(k, v){
dtrim = $.trim(v);
console.log(dtrim);
add2array(r,dtrim);
});
}else{
add2array(r,v);
}
});
Это делает один большой JS-объект с directorname как ключ и считается значение, но их какой-либо способ для меня, чтобы разобраться, что ? или мне нужно сделать массив объектов для этого. Было бы очень полезно, если бы кто-нибудь мог помочь мне решить эту проблему. Я использую jQuery, как вы можете, так что ваше решение может использовать это.
Всегда лучше делать сортировку на бэкэнде, могу я знать, почему вы хотите сделать это на фронте. Если вы хотите сделать это на стороне пользовательского интерфейса, вы должны использовать некоторые богатые интерфейсы пользовательского интерфейса, такие как сетка dojo или jgrid и т. Д. – kobe
это webapp, работающий на iphone, поэтому нет бэкэнд, это все JS/HTML5/CSS3. – Volmar