【问题标题】:Push array content into empty array using another variable as a placeholder for the content array name使用另一个变量作为内容数组名称的占位符将数组内容推送到空数组中
【发布时间】:2015-11-06 17:04:28
【问题描述】:

编辑:@Andreas 得到了解决方案。谢谢大家的回复!你们都摇滚!

我正在尝试列出和排列,但我得到了各种奇怪的错误。 placeValue = garden 和 personRange = a 所以 locationArray = garden a,但是当我在每个函数中使用它时它不起作用。如果我在每个函数中使用 gardena 而不是位置数组,它工作得很好。

gardena = ["Private Villa - Gozo", "Palazzo Parisio", "Ta' Frenc - Gozo", "Mridiana Wine Estate"];
    locationArray = new Array();
    locationArray = venueValue+personRange;
    $.each(locationArray, function(index, value) {
        alert(value);
    });

我敢打赌,解决方案是显而易见的,但我完全迷路了。

提前谢谢你。

【问题讨论】:

  • 如果gardena 是全局的:locationArray = window[venueValue+personRange] - 但你为什么不直接使用gardena
  • 我从一个表单获得了venueValue,从另一个表单获得了personRange。 Gardena 仅作为数组存在于我的 js 文件中(即将成为 db 表)。编辑:它有效。我确信这很明显。非常感谢,这个项目让我筋疲力尽。
  • 什么是venueValue+personRange?您将该添加的结果分配给名称locationArray。如果那个加法不是一个数组,那么你不能用 $.each() 遍历它。
  • venueValue+personRange 是数组的名称,但只有名称而不是值。正如我所说的抱歉问了一个明显的问题(我现在被困在这里大约 3 个小时)。
  • 但是如果 gardena 不是全局的(我以后可能会用到)。提前谢谢你。

标签: javascript jquery arrays for-loop


【解决方案1】:

要将元素添加到数组中,您应该使用 push() 方法。就像你正在做的那样,它将 locationArray 设置为一个字符串或一个数字。

我也建议像这样定义数组

var array = [];

而不是 new Array();

【讨论】:

    【解决方案2】:

    我想你想说venueValue 是字符串"garden"personRange 是字符串"a",这样venueValue+personRange是字符串 "gardena",并且您要遍历数组 gardena 的值。

    如果这是准确的,那么我的建议是:首先,将数组放在一个对象中,而不是让它成为一个全局对象。

    var mystuff = {
            gardena : ["Private Villa - Gozo", "Palazzo Parisio", "Ta' Frenc - Gozo", "Mridiana Wine Estate"],
            };
    

    然后就可以从对象中获取数组了:

    var locationArray = mystuff[ venueValue+personRange ];
    $.each(locationArray, function(index, value) {
        alert(value);
    });
    

    【讨论】:

      【解决方案3】:

      当您使用 + 号连接 Array 时会发生什么情况,它将把venueValue 的最后一个元素连接到 personRange。

      假设我的 a 数组是 a=[1,2,3] 而 b 是 b=[6,7,8] 如果我尝试 c=a+b 它会给出结果 [1,2,36 ,7,8] 这是不可取的,因此可以通过串联来合并两个数组

      例如:c=a.concat(b);

      它会给出结果 [1,2,3,6,7,8]

      如果你想要 [16,27,38] 这样的结果,你可以使用这个函数

      function ab(a,b)
      {var c=[]; 
      for(var i=0;i<a.length;i++)
      {c[i]=a[i]+''+b[i];} 
      return (c);
      } 
      var a=[1,5,6]; 
      var b=[9,0,8]; 
      console.log(ab(a,b));  
      

      如果你喜欢

      var a='ab'; 
      var k='b'; 
      var abb=[1,2,3,4]; 
      var c=eval(a+k); 
      console.log(c);
      

      在这种情况下,我们正在添加字符串并评估它们

      希望对你有帮助

      【讨论】:

        【解决方案4】:

        试试这个。

        像下面的代码 sn-ps 一样推送您的值。这样您就可以使用$.each() 方法迭代您的值。

        var locationArray = [],venueValue = 'garden ',personRange = 'a';
        locationArray.push(venueValue,personRange); //Push your values here in an array
        $.each(locationArray, function(index, value) {
            alert(value);
             }); 
        &lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"&gt;&lt;/script&gt;

        更新:

        我想我明白了你的意思。像这样使用eval 函数。它将捕获gardena 变量的值。然后你可以用它进行迭代。

        var locationArray = [],venueValue = 'garden',personRange = 'a',
            gardena = ["Private Villa - Gozo", "Palazzo Parisio", "Ta' Frenc - Gozo", "Mridiana Wine Estate"];
        locationArray = venueValue+personRange;
        $.each(eval(locationArray), function(index, value) {
            alert(value);
             });     
        &lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"&gt;&lt;/script&gt;

        FIDDLE中的DEMO

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-01-28
          • 1970-01-01
          • 1970-01-01
          • 2015-03-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多