2014-03-31 3 views
0

저는 새로운 jquery 학습자입니다. 나는 질문이있다.연관 jquery 배열에 대해서는 어떻게해야합니까?

이 스크립트를 작성했지만 결과가 정확하지 않습니다.

[ 
    {"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"} 
] 

어떻게해야합니까

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)); 

나는 경고에 다음과 같은 잘못된 결과를 얻을? 제발 조언.

+2

'$ all_data [ "holiday"]' –

답변

1

등으로 루프의 각 단계에서 동일한 객체 (a에 저장 됨)에 대한 참조를 푸시하는 것이 문제가됩니다. 기존 객체를 보완하기 만하면되므로 새 객체를 만들지 않아도됩니다.

이 문제를 해결하려면 object literal 표기법이 a 변수를 없애 직접 각 단계에서 새로운 객체를 생성합니다

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

정말 고맙습니다 !! 나는 이미 그것을 해결하고있다.^_ ^ – Tui

0

는 loopp

.... 
for(var i=0;i<myArray.length;i++){ 
    var a = {}; 
    ^^^^^^^^^^^ here 
    var ex_array = myArray[i].split(","); 
,691 안쪽에 a를 만들