JQuery отдельный массив - PullRequest
       1

JQuery отдельный массив

3 голосов
/ 29 сентября 2011

У меня есть текстовое поле массива, как показано ниже

<input type="text" name="txtname[]" value="single" />
<input type="text" name="txtname[]" value="twin" />
<input type="text" name="txtname[]" value="single" />
<input type="text" name="txtname[]" value="dulex" />
<input type="text" name="txtname[]" value="single" />

Я хочу показать это значение ...

один -------- 3
близнец -------- 1
дуплекс -------- 1

Ответы [ 3 ]

8 голосов
/ 29 сентября 2011
var txtname = $(':input[name="txtname[]"]').map(function(a,b){ return $(b).val(); }).toArray();

var unique = {};
$.each(txtname, function(a,b){
    if (!unique[b])
        unique[b] = 0;
    unique[b]++;
});

unique закончилось:

({single:3, twin:1, dulex:1})

UPDATE

Если вы хотите использовать его как дополнение jQuery :

$.fn.extend({
    unique_count: function(){
        var unique = {};
        this.each(function(a,b){
            var v = $(b).val();
            if (!unique[v])
                unique[v] = 0;
            unique[v]++;
        });
        return unique;
    },
    unique_vals: function(){
        var unique = [];
        $.each($(this).unique_count(), function(a,b){ unique.push(a); });
        return unique;
    }
});

И вывод:

var $inputs = $(':input[name="txtname[]"]');
$inputs.unique_count() // = Object: {single:3, twin:1, dulex:1}
$inputs.unique_vals()  // = Array:  ["single", "twin", "duplex"]
1 голос
/ 29 сентября 2011

Вы можете сказать это:

var all = $(":text");
var uniqueNames = jQuery.unique(all.map(function(){return $(this).attr("value"); }));
jQuery.each(uniqueNames, function(){
    console.log(this + "---" + all.filter("[value=" + this + "]").length);
});

Код является информативным:

  1. найти уникальные значения
  2. считать их в исходном массиве

См. Пример здесь: http://jsfiddle.net/BPxTd/

1 голос
/ 29 сентября 2011

Проверьте уникальную функцию jquery: http://api.jquery.com/jQuery.unique/

...