아래의 JSON 응답이 있습니다. $ .getJSON 메서드를 사용하여 JSON 데이터를로드하고 콜백 함수를 사용하여 아래와 같은 배열인지 확인하여 일부 조작을 수행합니다.자바 스크립트 배열 객체와 관련된 문제
{
"r": [{
"IsDefault": false,
"re": {
"Name": "Depo"
},
"Valid": "Oct8, 2013",
"Clg": [{
"Name": "james",
"Rate": 0.05
}, {
"Name": "Jack",
"Rate": 0.55
}, {
"Name": "Mcd",
"Rate": 0.01,
}],
},
{
"IsDefault": false,
"re": {
"Name": "Depo"
},
"Valid": "Oct8, 2013",
"Clg": [{
"Name": "james",
"Rate": 0.05
}, {
"Name": "Jack",
"Rate": 0.55
}, {
"Name": "Mcd",
"Rate": 0.01,
}],
},
{
"IsDefault": false,
"re": {
"Name": "Depo"
},
"Valid": "Oct8, 2013",
"Clg": [{
"Name": "james",
"Rate": 0.05
}, {
"Name": "Jack",
"Rate": 0.55
}, {
"Name": "Mcd",
"Rate": 0.01,
}],
}]
}
아래와 같이 loadFromJson1 및 loadFromJson2 함수에서 json 응답을 "input"매개 변수로 전달합니다.
var tablesResult = loadFromJson1(resultstest.r[0].Clg);
loadFromJson1 = function (input) {
if (_.isArray(input)) {
alert("loadFromJson1: Inside array function");
var collection = new CompeCollection();
_.each(input, function (modelData) {
collection.add(loadFromJson1(modelData));
});
return collection;
}
return new CompeModel({
compeRates: loadFromJson2(input),
compName: input.Name
});
};
loadFromJson2 = function (input)
// here is the problem, the 'input' is not an array object so it is not going to IF condition of the isArray method.
{
if (_.isArray(input)) {
alert("loadFromJson2: Inside array function");
//alert is not coming here though it is an array
var rcollect = new rateCollection();
_.each(input, function (modelData) {
rcollect.add(modelData);
});
return rcollect;
}
};
위 코드는 "input"으로 loadFromJson1 및 loadFromJson2 함수에 대한 json 응답을 전달합니다. isArray는 loadFromJson1 함수에서만 true가되고 if 조건 내에서 경고하지만 loadFromJson2 함수에서는 오지는 않지만 동일한 매개 변수를 전달합니다.
누군가가 배열 객체를 전달하더라도 loadFromJson2 함수가 경고를받지 못하는 이유를 말해 줄 수 있습니까?
여분의 쉼표가있는 것 같습니다. – ajax333221