2016-12-09 2 views
1

У меня есть функция, которая извлекает некоторые данные через AJAX в формате JSON, и я делаю цикл $.each для обработки данных. То, что я делаю прямо сейчас, это примерно так:jQuery each: Используйте переменную в имени ключа

$.each(result, function(i, field){ 
    window.localStorage[cumple1LAC] = field.cumple1LAC; 
    window.localStorage[cumple2LAC] = field.cumple2LAC; 
    window.localStorage[cumple3LAC] = field.cumple3LAC; 
    window.localStorage[cumple4LAC] = field.cumple4LAC; 
    window.localStorage[cumple5LAC] = field.cumple5LAC; 
    .... 
    .... 
    .... 
}); 

Таким образом, большинство ключей идентичны, за исключением числового идентификатора. Когда речь заходит об использовании полученных данных, что я делаю что-то вроде этого:

for (i=1;i<=numItems;i++){ 
    var cumple = window.localStorage['cumple'+i+'LAC']; 
    $('input[name=cumple'+i+'LAC]').val([cumple]); 
} 

Поскольку Есть много вещей, я хотел бы, чтобы перебрать идентификаторы в петле $.each, аналогичным образом к тому, что я делаю в цикле for, чтобы избежать сотен строк кода (которые я уже закодировал, но по существу - это боль в заднице). Можно ли это сделать? Я бы не хотел использовать числовые индексы для доступа к данным в извлеченном массиве, я хочу придерживаться пар ключей.

+1

Вы пробовали: 'window.localStorage [ "cumple" + я +" LAC "] = поле [" cumple "+ i +" LAC "];'? –

+2

Если вы так их храните, зачем вообще разбираться с 'cumpleXLAC'? Просто сохраните их в одном массиве по индексу –

+0

Как вы все время получаете доступ ко всем значениям, конвертируйте свои данные в строку Json и сохраните одно значение localstorage. Deserialise на чтение, чтобы вернуть ваши данные. –

ответ

1

Вы можете обращаться со своими field объект в качестве словаря и использовать имена свойств:

for (var key in field) { 
    window.localStorage[key] = field[key]; 
} 

JSfiddle:https://jsfiddle.net/TrueBlueAussie/rzth3hm5/

Смежные вопросы