【问题标题】:How do I select specific index items from a multi-dimensional array in jQuery如何从 jQuery 中的多维数组中选择特定的索引项
【发布时间】:2014-09-06 06:22:30
【问题描述】:

我有以下多维数组:

var practice_times = [
    ['Tuesday',['Late Afternoon (2.30-5.30pm)','Evening (5.30-8.30pm)']],
    ['Thursday',['Late Afternoon (2.30-5.30pm)','Evening (5.30-8.30pm)']],
    ['Friday',['Mid Morning (9am-12pm)','Midday (12-1pm)']]
];

我希望能够最初检索所有“天”,并将其放置在一个选择元素中,然后检索所有“时间”并将其放置在不同的选择元素中。

任何帮助都将不胜感激 - 为这个问题摸索了几个小时。

【问题讨论】:

    标签: jquery multidimensional-array indexing


    【解决方案1】:

    创建 2 个数组并根据您的要求填充数组..

    var days = [],times= []
    $.each(practice_times,function(index,value){
        days.push(value[0]);
        var objTime = value[1];
        times.push(objTime[0]);
        times.push(objTime[1]);
    });
    

    希望这会有所帮助:)

    【讨论】:

      【解决方案2】:

      试试

      var practice_times = [
          ['Tuesday', ['Late Afternoon (2.30-5.30pm)', 'Evening (5.30-8.30pm)']],
          ['Thursday', ['Late Afternoon (2.30-5.30pm)', 'Evening (5.30-8.30pm)']],
          ['Friday', ['Mid Morning (9am-12pm)', 'Midday (12-1pm)']]
      ];
      
      //console.log(practice_times);
      
      var day = [];
      var Time = [];
      for (var i in practice_times) {
      
          day.push(practice_times[i][0]);
          Time.push(practice_times[i][1]);
      }
      $("div:first").text(day);
      $("div:eq(1)").text(Time);
      

      DEMO

      【讨论】:

        【解决方案3】:

        你可以试试这个

        <select class="day"></select>
        <select class="time"></select>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
        <script>
        var practice_times = [
            ['Tuesday',['Late Afternoon (2.30-5.30pm)','Evening (5.30-8.30pm)']],
            ['Thursday',['Late Afternoon (2.30-5.30pm)','Evening (5.30-8.30pm)']],
            ['Friday',['Mid Morning (9am-12pm)','Midday (12-1pm)']]
        ];
        var day, time;
        for(var i = 0; i < practice_times.length; i++){
            day = '<option value="'+practice_times[i][0]+'">'+practice_times[i][0]+'</option>';
            $('.day').append(day);
            time = '<option value="'+practice_times[i][1][0]+'">'+practice_times[i][1][0]+'</option>' +
                '<option value="'+practice_times[i][1][1]+'">'+practice_times[i][1][1]+'</option>';
            $('.time').append(time);
        }
        </script>
        

        【讨论】:

          【解决方案4】:

          你应该试试这个方法

          var text= new Object();
              text["a"] = "one";
              text["b"] = "two";
          
              for (key in text){
                   console.log(text[key]);
                   console.log(key);
              }
          

          使用它,您将获得密钥及其价值,并且易于管理。

          【讨论】:

            【解决方案5】:

            试试这个从你的数组中创建选择选项:

             <select id='days'></select>
             <select id='time1'></select>
             <select id='time2'></select>
            
              <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
              <script>
                $(document).ready(function(){
                var practice_times = [
                ['Tuesday',['Late Afternoon (2.30-5.30pm)','Evening (5.30-8.30pm)']],
                ['Thursday',['Late Afternoon (2.30-5.30pm)','Evening (5.30-8.30pm)']],
                ['Friday',['Mid Morning (9am-12pm)','Midday (12-1pm)']]
               ];
               var i,j;
               var days,time1,time2='';  
            
               $.each(practice_times, function(key1, value1){
            
                    var str = String(value1).split(","); 
                     days += "<option>"+str[0] + "</option>";
                     time1 += "<option>"+str[1]+ "</option>";
                     time2 += "<option>"+str[2]+ "</option>";
            
               });
              $('#days').html(days);
              $('#time1').html(time1);
              $('#time2').html(time2);
            

            });

            【讨论】:

              【解决方案6】:

              感谢大家的帮助。我忘了提到我有多 (3) 组天/次要处理。这是我根据您的一些输入提出的解决方案:

              /* Contact Form Setup */
              var practice_times = [
              
                [
                  ['Tuesday',['Late Afternoon (2.30-5.30pm)','Evening (5.30-8.30pm)']],
                  ['Thursday',['Late Afternoon (2.30-5.30pm)','Evening (5.30-8.30pm)']],
                  ['Friday',['Mid Morning (9am-12pm)','Midday (12-1pm)']]
                ],
                [
                  ['Tuesday',['Early Afternoon (1-2.30pm)','Late Afternoon (2.30-5.30pm)']]
                ],
                [
                  ['Monday',['Mid-morning (9am-12pm)','Midday (12-1pm)','Early Afternoon (1-2.30pm)','Late Afternoon (2.30-5.30pm)']],
                  ['Tuesday',['Mid-morning (9am-12pm)','Midday (12-1pm)','Early Afternoon (1-2.30pm)','Late Afternoon (2.30-5.30pm)']],
                  ['Wednesday',['Mid-morning (9am-12pm)','Midday (12-1pm)','Early Afternoon (1-2.30pm)','Late Afternoon (2.30-5.30pm)']],
                  ['Thursday',['Mid-morning (9am-12pm)','Midday (12-1pm)','Early Afternoon (1-2.30pm)','Late Afternoon (2.30-5.30pm)']],
                  ['Friday',['Mid-morning (9am-12pm)','Midday (12-1pm)','Early Afternoon (1-2.30pm)','Late Afternoon (2.30-5.30pm)']]
                ]                     
              ];
              
              var getDays = function(index) {
                  practiceIndex = index;
                  days = [];
                  for(var i in practice_times[index]) {
                      days.push(practice_times[index][i][0]);
                  }
                  return days;
              }
              
              var getTimes = function(index) {
                  times = practice_times[practiceIndex][index][1];
                  return times;
              }
              
              var updateSelect = function(selectName,optArray) {
                  //init options
                  var selectOptions = "<option value='-'>- Preferred " + selectName.charAt(0).toUpperCase() + selectName.substring(1) + " -</option>";
                  //populate options
                  for(var i=0; i < optArray.length; i++) {
                      console.log(optArray[i][0]);
                      selectOptions+= "<option>" + optArray[i] + "</option>";
                  }
                  //add options to select and show
                  $('.contact-form select[name=' + selectName + ']').empty().append(selectOptions).show();
              }
              
              var toggleSelect = function(selectToToggle,selectVal) {
                  selectToToggle.toggle(selectVal == '-' ? false : true);
              }
              
              //Initialise
              var practiceIndex = -1;
              $('.contact-form .day-time').hide();
              $('.contact-form select[name=time]').hide();
              //Select change events
              $('.contact-form select[name=practice]').on('change',function(){ updateSelect('day',getDays($(this).prop('selectedIndex')-1)); toggleSelect($('.contact-form .day-time'),$(this).val()); });
              $('.contact-form select[name=day]').on('change',function(){ updateSelect('time',getTimes($(this).prop('selectedIndex')-1)); toggleSelect($('.contact-form select[name=time]'),$(this).val()); });
              

              【讨论】:

                猜你喜欢
                • 2017-02-08
                • 1970-01-01
                • 2016-04-22
                • 1970-01-01
                • 1970-01-01
                • 2017-01-12
                • 2020-09-28
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多