2016-02-17 10 views
0

У меня есть объект JSON, который возвращается мне из моего веб-сервиса, который я добавил в массив в моем проекте AngularJS.Отфильтровать массив в AngularJS

Мне нужно создать массив, который выглядит следующим образом:

$scope.eventSources = [ 
//this is event source object #1 
{ 
    events: [ // put the array in the `events` property 
    { 
     title: //POPULATE FROM MY ARRAY, 
     start: //POPULATE FROM MY ARRAY, 
     END: //POPULATE FROM MY ARRAY 
    }, 
    { 
     title: //POPULATE FROM MY ARRAY, 
     start: //POPULATE FROM MY ARRAY, 
     end: //POPULATE FROM MY ARRAY 
    } 
    ], 
}]; 

из массива, который выглядит следующим образом:

holidays: [ 
{ 
    HOLIDAY_END: "/Date(1461538800000+0100)/" 
    HOLIDAY_EVENT_ID: 1 
    HOLIDAY_START: "/Date(1461106800000+0100)/" 
    HOLIDAY_TITLE: "Spain  " 
    USER_ID: 1 
} 
] 

Так как вы можете увидеть HOLIDAY TITLE, HOLIDAY START AND HOLIDAY END необходимости добавляется к новый массив.

ответ

2

Это должно быть выполнено с помощью цикла forEach, который проходит через ваш holidays и создает объект с обязательным полем из каждого элемента вашего holidays. Этот код должен сделать трюк:

$scope.eventSources = [{events:[]}]; //set up object with array for containing data 
var func = function() { //Lets do it in a function so it's reusable 
    holidays.forEach(function(hol) { //forEach loop through the holidays array data 

     $scope.eventSources[0].events.push({ //Push a new object to our eventSOurces array 
      title: hol.HOLIDAY_TITLE, //Set up fields on new object 
      start: hol.HOLIDAY_START, 
      end: hol.HOLIDAY_END 
     });  
    }); 
} 
func(); //Call function to populate array 

Вы коммутируемой между END и end в запросе, поэтому я пошел с end, как это согласуется с другими полями.

+0

Это работало спасибо за возвращение ко мне. –

0

Это предложение с Array#map()

var data = { 
 
     holidays: [{ 
 
      HOLIDAY_END: "/Date(1461538800000+0100)/", 
 
      HOLIDAY_EVENT_ID: 1, 
 
      HOLIDAY_START: "/Date(1461106800000+0100)/", 
 
      HOLIDAY_TITLE: "Spain", 
 
      USER_ID: 1 
 
     }, { 
 
      HOLIDAY_END: "/Date(1462538800000+0100)/", 
 
      HOLIDAY_EVENT_ID: 2, 
 
      HOLIDAY_START: "/Date(1461106800000+0100)/", 
 
      HOLIDAY_TITLE: "France", 
 
      USER_ID: 2 
 
     }] 
 
    }, 
 
    $scope = { eventSources: [{}] }; 
 

 
$scope.eventSources[0].events = data.holidays.map(function (a) { 
 
    return { 
 
     title: a.HOLIDAY_TITLE, 
 
     start: a.HOLIDAY_START, 
 
     end: a.HOLIDAY_END 
 
    }; 
 
}); 
 
document.write('<pre>' + JSON.stringify($scope, 0, 4) + '</pre>');

+0

Может ли это работать, если массив вернулся ко мне, содержит больше праздников в массиве? –

+0

@BenClarke, да, см. Редактирование. –