Ссылка на столбцы JSON по индексу в JQuery - PullRequest
0 голосов
/ 15 февраля 2011

Я перебираю таблицу JSON с помощью оператора jquerys foreach.Я должен ссылаться на столбцы по имени, например:

$.each(items, function (index, item) {
    if (item.CustomerFname == "Bob") {
        alert(item.CustomerFname + " " item.CustomerSname)
}

В то время как я хотел бы иметь возможность сказать что-то вроде:

$.each(items, function (index, item) {
    if (item.columns[1] == "Bob") {
        alert(item.columns[1] + " " item.columns[2])
}

Где [x] индекс индекса.

В конечном итоге я пытаюсь сделать эту функцию динамичной с учетом списка json, который я передаю, что, конечно, будет означать, что имена столбцов изменятся.Однако я хотел бы выполнить те же операции над столбцами ... если это имеет смысл!

Любая помощь будет принята с благодарностью.

Спасибо.

Ответы [ 2 ]

1 голос
/ 15 февраля 2011

Я не могу предложить вам ответ, но скажу, что это определенно плохая идея.Объекты Javascript представлены хеш-таблицами.Одно из свойств хеш-таблиц заключается в том, что порядок хранения ключей не определен.Вы не можете гарантировать, что CustomerFname всегда будет с индексом 1 и CustomerSname всегда будет с индексом 2.

Однако, если вам абсолютно необходимо сделать это таким образом, вы можете получить ключи в объекте Javascriptскопируйте их в массив и отсортируйте их, а затем получите значение таким образом.

0 голосов
/ 15 февраля 2011

Посмотрим, правильно ли я понял. У вас есть массив таких объектов:

var items = [
{State:"MG",CostumerFname:"Bob",age:30},
{State:"SP",CostumerFname:"John",age:25},
{State:"RN",CostumerFname:"Mary",age:34}];

И вы пытаетесь получить доступ к свойствам объекта («столбцам»), как к массиву.

Вы можете сделать что-то подобное для выполнения своей задачи:

transform = function(list)
{
    var len = list.length;
    var transformedList = [];
    for(i=0;i<len;i++)
    {
        var item = [];
        for (j in list[i])
        {
            item.push(list[i][j]);
        }
        transformedList.push(item);
    }
    return transformedList;
}

И тогда вы можете использовать его следующим образом:

var transformedItems = transform(items);

$.each(transformedItems , function (index, item) { if (item[1] == "Bob") { alert(item[1] + " " + item[2]) } } );

Надеюсь, это поможет:)

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