Javascript 如何避免使用“多个”;ng repeat“;返回拆分数组时是否使用Angular?

Javascript 如何避免使用“多个”;ng repeat“;返回拆分数组时是否使用Angular?,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我对创建具有特定功能的表单感兴趣。表单将有多个标准。当满足条件时,将显示相关价格。在这种情况下,用户可以选择天数集,然后选择时间集。我遇到了一个障碍,我可以按日期范围过滤时间,但这只返回一个数组(“['4:55pm-5:25',…]))。我需要拆分此数组并将其用于一组新的选项值。有关此问题的图像示例,请参见下文。此外,我正在尝试避免在另一个ng repeat中使用一个ng repeat,因为这不适用于所选表单类型。我尝试过使用另一个函数并使用ng repeat=“time in times.ti

我对创建具有特定功能的表单感兴趣。表单将有多个标准。当满足条件时,将显示相关价格。在这种情况下,用户可以选择天数集,然后选择时间集。我遇到了一个障碍,我可以按日期范围过滤时间,但这只返回一个数组(“['4:55pm-5:25',…]))。我需要拆分此数组并将其用于一组新的选项值。有关此问题的图像示例,请参见下文。此外,我正在尝试避免在另一个ng repeat中使用一个ng repeat,因为这不适用于所选表单类型。我尝试过使用另一个函数并使用ng repeat=“time in times.times”,但运气不佳

JS:

$scope.times=[
{'day':'星期一和星期三','dates':['8/10-8/31','9/2-9/30','10/5-10-28'],'times':['4:55pm-5:25pm','5:40pm-6:10pm','6:20pm-6:50pm','price':'46'},
{'day':'星期二和星期四','dates':['8/11-8/27'],'times':['4:55pm-5:25pm','5:40pm-6:10pm','6:20pm-6:50pm','price':'39'},
{'day':'星期二和星期四','dates':['9/1-9/29','10/1-10/29','times':['4:55-5:25','5:40-6:10','6:20-6:50'],'price':'59'],
{'day':'Saturday','dates':['9/12-11/21 10月31日无课],'times':['11:00am-11:30am','11:35am-12:00pm','price':'65']
]; 
$scope.concat=函数()
{
var concat=[];
var fullDates=[]

对于(var z=0;z我发现,您还可以通过传入一个具有索引属性值的对象,将键添加到正在创建的新对象中(使用concat函数)。这样,您就不必担心重写JSON数据。然后,您可以使用此新索引和日期来选择特定对象

HTML:


{{days.day}
选择一个时间:
{{time}}
JS:

$scope.concat=function()
{
var concat=[];
var fullDates=[]

对于(var z=0;z“不适用于所选表单类型”是什么意思?对于您应该使用的
标记中的选项。@muenchdo我使用了ng选项,但这无助于我进一步了解。我将其设置为ng options=“time.times as time.times for time in times”“这不允许我遍历对象数组中的每个数组。
$scope.times = [
    {'day': 'Monday & Wednesday', 'dates': ['8/10-8/31', '9/2 - 9/30', '10/5- 10-28'], 'times': ['4:55pm - 5:25pm', '5:40pm - 6:10pm', '6:20pm - 6:50pm'], 'price': '46'},
    {'day': 'Tuesday & Thursday', 'dates': ['8/11-8/27'], 'times':['4:55pm - 5:25pm', '5:40pm - 6:10pm', '6:20pm - 6:50pm'], 'price': '39'},
    {'day': 'Tuesday & Thursday', 'dates': ['9/1-9/29', '10/1-10/29'], 'times':['4:55pm - 5:25pm', '5:40pm - 6:10pm', '6:20pm - 6:50pm'], 'price': '59'},
    {'day': 'Saturday', 'dates': ['9/12 - 11/21 No Class Oct 31'], 'times':['11:00am - 11:30am', '11:35am-12:00pm'], 'price': '65'}
]; 

$scope.concat = function()
{
    var concat = [];
    var fullDates = []
    for (var z = 0; z<= top.length - 1; z ++)
    {
        var dates = top[z].dates;
        var day = top[z].day; 

        //return dates;

        for(var i = 0; i<=dates.length - 1; i++)
         {
            //concat.push(day.dates[i]);
            concat.push(day + ' ' + dates[i]);
            fullDates.push(dates[i])            
         }
        $scope.fullDates = fullDates;

    }
    return concat; 
};
<select name="days" id="#preschool" ng-model="selectedgroup">
        <option ng-repeat="days in concat() track by $index" value="{{fullDates[$index]}}">
        {{days}}
        </option>
    </select>
    Select A Time:
    <select name="times" id="times" ng-model="selectedTime">
    <option ng-repeat="time in times| filter: {dates: selectedgroup}" value="{{$index}}">
        {{time.times}}
    </option>
    </select>
<select name="days" id="#preschool" ng-model="selectedgroup">
        <option ng-repeat="days in concat() track by $index" value="{{days.index}}">
        {{days.day}}
        </option>
    </select>
    Select A Time:
    <select name="times2">
        <option value="" ng-repeat="time in times[selectedgroup].times">
            {{time}}
        </option>
$scope.concat = function()
{
    var concat = [];
    var fullDates = []
    for (var z = 0; z<= top.length - 1; z ++)
    {
        var dates = top[z].dates;
        var day = top[z].day; 
        //return dates;
        for(var i = 0; i<=dates.length - 1; i++)
         {
            concat.push({'day': day + ' ' + dates[i] , 'index':z}); 
         } 
    }
    return concat; 
};
});