Что мне делать с ассоциативным массивом jquery?

0

Я новый ученик jquery. У меня есть вопрос.

Я написал этот скрипт, но результат не правильный.

var details = <?php echo json_encode($all_data["holiday"]);?>;
var myArray = details.split("|");
var a = {};
var natDays = [];

for(var i=0;i<myArray.length;i++){
    var ex_array = myArray[i].split(",");
    a["month"] = ex_array[0];
    a["date"] = ex_array[1];
    a["name"] = ex_array[2];

    natDays.push(a);
}

alert( JSON.stringify(natDays) );

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

[
    {"month":"3","date":"7","name":"test"},
    {"month":"3","date":"7","name":"test"},
    {"month":"3","date":"7","name":"test"},
    {"month":"3","date":"7","name":"test"}
]

Должен быть:

[
    {"month":"4","date":"11","name":"test"},
    {"month":"4","date":"4","name":"test"},
    {"month":"4","date":"13","name":"song kran festival"},
    {"month":"3","date":"7","name":"test"}
]

Что мне делать? Пожалуйста, порекомендуйте.

  • 2
    Просьба показать, что такое $all_data["holiday"]
Теги:
arrays
associative

2 ответа

1

Проблема в том, что вы нажимаете ссылку на один и тот же объект (хранящийся на a) на каждом шаге цикла - как на a['month'] и т.д., Вы просто добавляете существующий объект, а не создаете новый.

Чтобы решить эту проблему, чтобы избавиться от этого a переменном и создать новый объект на каждый шаг непосредственно с object literal обозначением:

for (var i=0; i < myArray.length; i++){
   var ex_array = myArray[i].split(",");
   natDays.push({
     month: ex_array[0],
     date: ex_array[1],
     name: ex_array[2]
   });
}

Вы можете сделать этот код еще более кратким, используя jQuery.map():

var natDays = $.map(myArray, function(rec) {
  var fields = rec.split(',');
  return {
    month: fields[0],
    date: fields[1],
    name: fields[2]
  };
});
  • 0
    Огромное спасибо!! Я уже решил это. ^ _ ^
0

создать внутри loopp a

....
for(var i=0;i<myArray.length;i++){
   var a = {};
   ^^^^^^^^^^^ here
   var ex_array = myArray[i].split(",");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню