2016-12-09 13 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

だからあなたのデータは、異なる何をされた場合あなたは1日あたりのオープン/クローズ時間が異なりますし、日数もありません。この質問には明確化が必要です。 – 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>