2016-12-09 5 views
0

도와주세요. 객체의 값을 가져 와서 결과를 얻으려는 각도 메서드가 있습니다. "월요일 - 금요일 : 0800-1600"개체에서이 값을 추출하는 방법

$scope.ourHours = { 
    services: [{ 
    title: "Office hours", 
    phone: "1-800-123-1234", 
    hours: [ 
     {day:'Monday',open:'0800',close:'1800'}, 
     {day:'Tuesday',open:'0800',close:'1800'}, 
     {day:'Wednesday',open:'0800',close:'1800'}, 
     {day:'Thursday',open:'0800',close:'1800'}, 
     {day:'Friday',open:'0800',close:'1800'} 
    ] 
    }] 
}; 
+0

그래서 데이터가 다른 것 인 경우 , 당신은 하루에 다른 열린/닫는 시간을 가지거나 놓친 일이 있습니다 ...이 질문에는 명확한 설명이 필요합니다. – trincot

+0

[ask]를 읽으십시오. 핵심 구절 : "검색 및 연구"및 "당신이 직접 해결하지 못하게하는 어려움을 설명하십시오." –

+0

데이터의 반복이 확실하다면 그냥 그대로 쓰십시오. – Redu

답변

1

시간 일치, 그룹화가 있다면 이전 일을 추적하고, 다음과 같습니다

function getHoursText(hours){ 
 
    var arr = [], txt = []; 
 

 
    for(var i=0; i<hours.length; i++){ 
 
     if(arr.length && 
 
      (arr[0].open !== hours[i].open || arr[0].close !== hours[i].close) 
 
     ){ 
 
      txt.push(arrayToText(arr)); 
 
      arr = []; 
 
     } 
 
     arr.push(hours[i]); 
 
    } 
 

 
    txt.push(arrayToText(arr)); 
 

 
    return txt.join('\n'); 
 

 
    function arrayToText(arr){ 
 
     var str; 
 
     if(!arr.length){ return ""; } 
 
     str = arr[0].day; 
 
     if(arr.length > 1){ str += '-' + arr.pop().day; } 
 
     str += ': ' + arr[0].open + '-' + arr[0].close; 
 
     return str; 
 
    } 
 
} 
 

 
/* 
 
* Example usage 
 
*/ 
 
var hours = [ 
 
     {day:'Monday',open:'0800',close:'1500'}, 
 
     {day:'Tuesday',open:'0800',close:'1800'}, 
 
     {day:'Wednesday',open:'0800',close:'1800'}, 
 
     {day:'Thursday',open:'0800',close:'1800'}, 
 
     {day:'Friday',open:'0800',close:'1500'} 
 
    ]; 
 

 
console.log(getHoursText(hours));

+0

미리 감사드립니다 @ 블렉스 오늘 밤 당신의 방법을 시도합니다 – Bamanyi

0

어때요?

angular.module('app', []) 
 
.filter('hours', function() { 
 
    return function(item) { 
 
    return item.substr(0,2) + ":" + item.substr(2,2); 
 
    } 
 
}) 
 
.controller('ShopHours', function ShopHours($scope) { 
 
    $scope.ourHours = { 
 
    services: [{ 
 
     title: "Office hours", 
 
     phone: "1-800-123-1234", 
 
     hours: [ 
 
     {day:'Monday',open:'0800',close:'1800'}, 
 
     {day:'Tuesday',open:'0800',close:'1800'}, 
 
     {day:'Wednesday',open:'0800',close:'1800'}, 
 
     {day:'Thursday',open:'0800',close:'1800'}, 
 
     {day:'Friday',open:'0800',close:'1800'} 
 
     ] 
 
    }] 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="ShopHours"> 
 
    <div ng-repeat="serv in ourHours.services"> 
 
    <h3>{{serv.title}}</h3> 
 
    <p>Phone: {{serv.phone}}</p> 
 
    <div>Hours: 
 
     <ng-repeat ng-repeat="hours in serv.hours"> 
 
     <p><b>{{hours.day}}:</b> from {{hours.open | hours}} to {{hours.close | hours}}</p> 
 
     </ng-repeat> 
 
    </div> 
 
    </div> 
 
</div>

관련 문제