API로 작업 중이며 이상한 형식의 데이터가 나에게 돌아오고 있습니다. 아니면 적어도 나에게있다. 데이터는 상점 운영 시간이며 프론트 엔드에서 필요로하는 방식으로 일치 시키려고합니다. (응용 프로그램은 Angular로 작성되어 API 2 개를 사용하므로 API를 사용하여 논리를 처리해야합니다JavaScript : 루프 내부의 루프 내에서 루프 최적화
홀수 구조 IMOvar operatingHoursArray = [
{Weds: true, End: "17:00", Start: "09:00"},
{Tue: true, End: "17:00", Start: "09:00"},
{Thur: true, End: "17:00", Start: "09:00"},
{Sun: false, End: "", Start: ""},
{Sat: true, End: "17:00", Start: "09:00"},
{Mon: true, End: "17:00", Start: "09:00"},
{Fri: true, End: "17:00", Start: "09:00"}
]
, 나는 요일을 선호했을 것이다 : 나는
이 데이터는 API에서 들어오는되는 형식입니다) 자신의 형식에 적응하지 않으 물체가되면 열린 시간과 닫힌 시간이 그 안에 숨어 있습니다. 내 응용 프로그램 (AngularJS와는) 다음과 같은 형식으로 데이터가 필요합니다 '폐쇄'에
var formattedHours = {
Sunday: 'Closed',
Monday: 'Closed',
Tuesday: 'Closed',
Wednesday: 'Closed',
Thursday: 'Closed',
Friday: 'Closed',
Saturday: 'Closed'
};
시간 기본값이 내가 그것을 필요로하는 형식 요일에 맞게 사용하고있는 코드는 지역 :
var daysOfWeek = [
{ sform: 'Mon', lform: 'Monday' },
{ sform: 'Tue', lform: 'Tuesday' },
{ sform: 'Weds', lform: 'Wednesday' },
{ sform: 'Thur', lform: 'Thursday' },
{ sform: 'Fri', lform: 'Friday' },
{ sform: 'Sat', lform: 'Saturday' },
{ sform: 'Sun', lform: 'Sunday' }
];
// Loop through the operating hours for the dealer
for (var i = operatingHoursArray.length - 1; i >= 0; i--) {
// Loop through the property names for each day, getting the first property name (the day of week)
for (property in operatingHoursArray[i]) {
// Loop through the days of the week
for (var v = daysOfWeek.length - 1; v >= 0; v--) {
// If the day of the week (array) matches the property name, get the details
if(daysOfWeek[v].sform == property && operatingHoursArray[i][property] === true) {
formattedHours[daysOfWeek[v].lform] = operatingHoursArray[i].Start + ' - ' + operatingHoursArray[i].End;
}
};
break; // Forces loop to stop after first property
}
};
이 정말 빠르게 정말 불쾌한지고,하지만 내 지식 (멍청한 놈 수준)으로,이 더 이상 효율적으로하는 방법을 확실 해요. 그것은 내가 필요로하는 것을 위해 일하고있다. 그러나 이것을 코드화하는 더 좋은 방법이 있는가? 현재는 매주 요일을 확인하기 위해 49 회 실행해야합니다. 또한 일부 상점에서는 영업 시간을 7 시간으로 제공하지 않고 영업 시간 만 제공합니다. 다른 API가 같은 구조에 의존하기 때문에 formattedHours
의 구조를 변경할 수 없습니다. 객체에
길지 않은 짧은 이름을 가진 최종 객체를 열면 더 빠를 수 있습니다. – Markasoftware
'// 첫 번째 속성 이후 루프가 강제 종료됩니다. ' "첫 번째 속성"이 없습니다. 'for-in'을 사용할 때 반복 순서에 의존해서는 안됩니다. –
우우, 나는 그것을 몰랐다. 머리를 가져 주셔서 감사합니다. 그것이 순서대로 오지 않는다면 그것은 정말로 일을 망칠 것입니다 : S. – Neil