как найти записи в одном файле JSON - PullRequest
0 голосов
/ 06 декабря 2010

У меня есть один JSON-файл, подобный следующему:

{entries:[{title:‘foo’,id:‘01’,created:‘2010-12-06’},{title:‘bar’,id:‘02’,created:‘2010-12-05’}]}

А также у меня есть один html-файл, который с помощью jQuery сначала получает файл json с сервера.И отобразить информацию.

<div id='list'>
<li><p id="01">foo</p></li>
<li><p id="02">bar</p></li>
</div>

Теперь я хочу использовать jQuery, когда я нажимаю на один элемент, например, «foo», и сначала нахожу эту запись в моем файле JSON, а затем внесу некоторые изменения.в данных JSON.В настоящее время я стекаюсь в первую очередь, когда нажимаю на элемент, нахожу нужную запись в файле JSON, кто-нибудь может помочь?Спасибо.

1 Ответ

1 голос
/ 06 декабря 2010

Предполагая, что вы уже проанализировали строку JSON, вы должны перебрать массив, чтобы получить соответствующий элемент:

$('#id p').click(function() {
    var entries = json.entries;
    var item = null;
    for(var i = entries.length;i--;) {
        if(entries[i].id == this.id) {
            item = entries[i];
            break;
        }
    }

    // so something with item
}); 

Но зацикливание каждый раз над массивом неэффективно. Лучше создать какую-нибудь хеш-таблицу (которая является просто объектом в JavasScript (как и все остальное;))) и просто посмотреть идентификатор. Это означает, что вы должны предварительно обработать возвращенный JSON:

var items = {};
var entries = json.entries;

for(var i = entries.length;i--;) {
    var entry = entries[i];
    items[entry.id] = entry;
}

и позже вы можете получить соответствующий предмет просто:

var item = items[this.id];
// item will be undefined if `this.id` is not present in `items`

Примечание: Ваш HTML-код недействителен, li элементы должны иметь ul или ol в качестве родительского элемента.

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