#javascript #jquery
#javascript #jquery
Вопрос:
Мне нужно выполнить итерацию по набору данных идентификаторов и меток. Я правильно понял некоторую часть кода, но мне нужна помощь.
// 1. String
var string = '1:answer1,2:answer2,3:answer3,4:answer4,5:answer5,'
// 2. Split to array
var string = string.split(",");
// 3. EACH
$.each(string, function(key, val) {
var answer = answer.split(":");
$.each(answer, function(key1, val1) {
// output textfield with id of key1 and value of val1
});
});
Я могу просмотреть первый набор данных, разделенный запятой, но не следующий (:). Как мне это сделать?
Комментарии:
1. Вы можете контролировать формат строковых данных? Если это так, было бы намного проще преобразовать его в формат JSON.
2. Совет: Не называйте свои массивы так, как вы называете свои строки. Это действительно сбивает с толку и затрудняет понимание кода.
3. @ Rory McCrossan: Строка берется из Rails, я посмотрю в JSON .. Спасибо! @Rodolphe: спасибо .. строка была просто использована для создания примера : )
Ответ №1:
$.each(string, function(key, val) {
var answer = val.split(":");
key1 = answer[0];
val1 = answer[1];
alert(key1 "--" val1);
});
Ответ №2:
это должно быть var answer= val.split(":");
вместо var answer = answer.split(":")
;
Ответ №3:
Вы можете использовать String.replace в качестве итератора:
var string = '1:answer1,2:answer2,3:answer3,4:answer4,5:answer5,'
var html = []
string.replace(/([^:] ):([^,] )(,|$)/g, function(_, key, val) {
html.push("<input name='" key "' value='" val "'>")
});
alert(html.join("n"))
Ответ №4:
Конечно, я ничего не имею против вашей самодельной строки, но рассматривали ли вы возможность использования JSON для инкапсуляции данных в строку. Хотя JSON универсален, он, вероятно, идеально подходит для JavaScript.
Итак, если бы вы закодировали свои данные следующим образом, это действительно было бы проще простого:
var data = [
{
"id": 1,
"answer": "answer1"
},
{
"id": 2,
"name": "answer2.. etc."
}
];
Итак, теперь вы можете очень легко получить доступ к своим данным, используя массив и обозначение свойств:
alert (data[0].answer);
Обновление: Итак, если вам повезет и ваше приложение Rails находится на версии 3.1, то добавить поддержку JSON действительно проще простого:
Для базовой поддержки JSON единственное, что вам нужно сделать, это:
# GET /answers/1
# GET /answers/1.json
def show
@answer = Answer.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json do
render json: @answer
end
end
end
Комментарии:
1. Отлично, спасибо.. но я получаю строку из rails.. Я думаю, было бы легко преобразовать его в JSON.
2. JSON и rails очень хорошо сочетаются, я обновил свой ответ примером того, как может выглядеть ваш контроллер.