Jquery конвертировать строку одного типа в массив строк - PullRequest
0 голосов
/ 12 мая 2010

Рассмотрим строку,

{"Table" : [{"Bird" : "Peacock"},
{"Bird" : "Crow"}]}

для этого ["Peacock", "Crow"] в jquery ... Возможно ли это?не работал ...

$(document).ready(function() {
                var obj = JSON.parse('{"Table" : [{"Bird" : "Peacock"},{"Bird" : "Crow"}]}');
                myarray = [];

                $.each(obj.table, function(i, v) {
                    myarray.push(v.Bird);
                });
                $("#tags").autocomplete(myarray, {
                    width: 138,
                    max: 4,
                    highlight: false,
                    multiple: true,
                    multipleSeparator: " ",
                    scroll: true,
                    scrollHeight: 300
                });
            });

Ответы [ 5 ]

0 голосов
/ 12 мая 2010

Вы можете использовать метод parseJSON (требуется jQuery 1.4.1 или новее) для анализа строки, затем метод map для получения свойства Bird от каждого элемента:

var str = '{"Table" : [{"Bird" : "Peacock"},{"Bird" : "Crow"}]}';
var arr = $.map($.parseJSON(str).Table, function(e){ return e.Bird; });

Если это не строка, а объект, вам просто нужен метод map:

var obj = {"Table" : [{"Bird" : "Peacock"},{"Bird" : "Crow"}]};
var arr = $.map(obj.Table, function(e){ return e.Bird; });
0 голосов
/ 12 мая 2010
var s = '{"Table" : [{"Bird" : "Peacock"},{"Bird" : "Crow"}]}'

var result = '[' + $.map($.parseJSON(s).Table, function(el) {
    return '"' + el.Bird + '"';
}).join(', ') + ']';

Правила функционального стиля. Хотя я не уверен, что вы действительно хотите строку как вывод Если нет:

var result = $.map($.parseJSON(s).Table, function(el) {
    return el.Bird;
});
0 голосов
/ 12 мая 2010

Если это строка, вы можете использовать parseJSON , чтобы превратить ее в объект (для jQuery 1.4+). В противном случае пропустите первую строку:

var s = '{"Table" : [{"Bird" : "Peacock"},{"Bird" : "Crow"}]}';

var data = $.parseJSON(s);
var table = data.Table;
var birds = [];
for(var i = 0; i< table.length;i++){
    birds.push(table[i].Bird);
}

alert(birds); //Peacock,Crow
0 голосов
/ 12 мая 2010
var list = {"Table" : [{"Bird" : "Peacock"},{"Bird" : "Crow"}]};
var newList = $.map(list.Table, function(item) {
    return item.Bird
});
0 голосов
/ 12 мая 2010

Вы можете сделать это простым javascript:

var obj={"Table" : [{"Bird" : "Peacock"},{"Bird" : "Crow"}]};
var tables=obj.Table,i,ret=[];
for(i=0;i<tables.length;i++)
    ret.push(tables[i].Bird);

Тогда в переменной ret у вас будет массив результатов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...