【问题标题】:create two dimensional array and loop through it in jquery创建二维数组并在 jquery 中循环遍历它
【发布时间】:2014-10-01 11:45:19
【问题描述】:

目标:

  1. 在 javascript/jquery 中创建二维数组
  2. 将数据推入其中
  3. 循环遍历每个键值对
  4. 循环调用函数

代码:

    var IDs = [];
    /* Find Input elements and push its ID & Value into an array */
    $('#divDynamicFields').find("input").each(function () { 
       IDs.push(this.id, $(this).val()); 
   }); 
    console.log(IDs); /* Now it prints string seprated by ',' */

   /* Loop Through Each element in 2D array */
   $.each(IDs, function(key, value) { 
     $.each(key, function(innerKey, innerValue){
        CallFunction(id,val); 
        /* Will This Work ? */
      }
   }

【问题讨论】:

  • 我在那个一维数组中看不到二维。所以我想答案是否定的,那是行不通的。
  • @Spokey 我想创建将id,value 保存为对的二维数组
  • 看看fiddle
  • @Regent 将其发布为答案 :)
  • @Shaggy 好的,因为它看起来很适合你 :)

标签: javascript jquery arrays


【解决方案1】:

整个想法是推送到数组不是两个元素,而是一个由两个元素组成的数组:

JSFiddle.

var IDs = [];
$('#divDynamicFields input').each(function()
{ 
    IDs.push([this.id, $(this).val()]); 
});

for (var i = 0; i < IDs.length; i++)
{
    CallFunction(IDs[i][0], IDs[i][1]);
}

function CallFunction(id, value)
{
    console.log("ID: " + id + ", value: " + value);
}

【讨论】:

    【解决方案2】:

    你有几个问题..

    第一个是你必须将输入添加为数组

           IDs.push([this.id, $(this).val()]); 
    

    第二个是要调用刚才加在一起的id,不想做双循环。

    $.each(IDs, function(key, value) { 
          CallFunction(value[0],value[1]);
    });
    

    这是一个例子:

    var IDs = [];
    /* Find Input elements and push its ID & Value into an array */
    $('#divDynamicFields').find("input").each(function () { 
       IDs.push([this.id, $(this).val()]); 
     }); 
    console.log(IDs); /* Now it prints string seprated by ',' */
    
     /* Loop Through Each element in 2D array */
    $.each(IDs, function(key, value) { 
           CallFunction(value[0],value[1]);
    });
    
    function CallFunction(id,val) {
       console.log(id+","+val);
    }
    

    JSFiddle

    【讨论】:

      【解决方案3】:

      使用对象 插入

      var IDs = {};
      $('#divDynamicFields').find("input").each(function () {     
         IDs[this.id]= $(this).val(); 
      }); 
      

      同样循环

      $.each(IDs , function (index, value) {
          alert( index + ' : ' + value );
      });
      

      【讨论】:

      • 什么是newsobjobj.[this.id] - 应该是obj[this.id],不是吗? $('#divDynamicFields').find("input")$('#divDynamicFields input') 一起看起来会好一些。
      • @Regent ,它的拼写错误兄弟,逻辑很重要。感谢更正的答案。DOWNVOTER 关心评论吗?答案正确吗?
      • 一个人可以理解错字,obj.[this.id] to => IDs.[this.id] 这很难吗?
      • 答案中的所有错别字和错误很难改正吗?答案应该是答案,而不是“查找并修复其中的所有错误和错别字”。我不会对答案投反对票,因为我一直希望人们会纠正它们。而作为复仇的投票答案很奇怪,你不这么认为吗?再说一遍:必须是IDs[this.id],而不是IDs.[this.id]
      • 好的,如果答案正确,您可以 +1。现在它是正确的,对未来的用户有好处。
      【解决方案4】:

      您的推送语法和迭代是错误的。你应该这样做:

      var IDs = [];
      
      IDs.push([1, 2]);
      IDs.push([2, 3]);
      
      /* Loop Through Each element in 2D array */
      $.each(IDs, function(key, value) {
        alert(value);
      });
      &lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

      【讨论】:

        【解决方案5】:

        创建二维数组

        MultiArray = new Array(5)
        
        MultiArray [0] = new Array(2)
        
        MultiArray [0][0] = "Tom"
        
        MultiArray [0][1] = "scientist"
        
        MultiArray [1] = new Array(2)
        
        MultiArray [1][0] = "Beryl"
        
        MultiArray [1][1] = "engineer"
        

        https://trans4mind.com/personal_development/JavaScript/Array2D.htm

        【讨论】:

          【解决方案6】:

          您可以尝试使用此方法在 jquery 中创建维度数组

          var IDs = [];
           $('#divDynamicFields').find("input").each(function () { 
               IDs.push({
                  id: $(this).val()           
               });
          });
          
          console.log(IDs);
          

          这将允许您通过 ajax 发送任何您想在数组中传递的数据。

          【讨论】:

            猜你喜欢
            • 2023-03-23
            • 2014-12-22
            • 1970-01-01
            • 2019-02-04
            • 1970-01-01
            • 2014-05-01
            • 2018-03-09
            • 1970-01-01
            相关资源
            最近更新 更多