【问题标题】:jquery/javascript -how to loop through array and create variables in each iteration?jquery/javascript - 如何遍历数组并在每次迭代中创建变量?
【发布时间】:2011-10-21 19:13:30
【问题描述】:

我现在想知道为什么会失败:

if (longest.length >= 3) {
    for ( var i = 0; i < longest.length-1; i++) {
      var $last[i] = longest[i].splice(-1).toString();
      //if ( $( $last[i] ).closest(':jqmData(role="panel")') == "popover" ) { 
      //var gotoPage = $last[i];
    // }
      }
    }

longest 是一个数组,其中包含数组元素。

我想遍历longest 中的数组数量,并从每个嵌套数组的最后一个元素创建变量。 .splice(-1).toString() 无法告诉我"missing ; before statement"

我做错了什么?

编辑: 最长的看起来像这样:

[[#menu, #menuSub1, #menuSub2], [#main, yield, yield], [#pop1, #pop1-1, #pop1-2]]

它包含在一个功能中,用于跟踪具有不同面板的移动应用程序中的浏览器历史记录。

EDIT2: 完成代码(Thx Mic):

if (longest.length >= 3) {
   var $last = [];
   for ( var i = 0; i < longest.length; i++) {
      $last.push( longest[i][ longest[i].length - 1 ]);
      if ( $( $last[i] ).closest(':jqmData(role="panel")').jqmData('panel')  == "popover" ) { 
         var gotoPage = $last[i]; }
      }
   }

【问题讨论】:

  • 应该是变量名。 $last0, $last1, $last2...
  • 我相信 splice() 需要两个参数,都是正整数或零。
  • 你有一个额外的“}”,你可能忘记注释掉了。
  • @Diodeus:我经常使用它,总是这样,所以我认为这无济于事。我认为要么链接 splice().toString() 不去,要么我不能像这样声明变量: $last[i]

标签: javascript jquery arrays for-loop


【解决方案1】:

你应该这样写:

if (longest.length >= 3) {
    var $last = [];
    for ( var i = 0; i < longest.length-1; i++) {
      $last.push( longest[i][ longest[i].length - 1 ] );
    }
  }

并使用$last[0]获取值

或者使用像这样的哈希:

if (longest.length >= 3) {
    var hash = {};
    for ( var i = 0; i < longest.length-1; i++) {
      hash['$last'+ i] = longest[i][ longest[i].length - 1 ];
    }
  }

并使用例如hash.$last0获取内容

【讨论】:

  • 可以提供longest的样本,会有所帮助
  • 我编辑了答案,更好吗?如果您只有 2 级数组,这是可以的,如果您有更多,它需要递归
  • longest.length-1 有点奇怪,因为你永远不会到达最长的最后一个元素
  • 您的第一个 sn-p 完美运行!谢谢。我今晚可能会梦想“阵列式”......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-16
  • 2019-01-19
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 2012-08-05
  • 2021-04-18
相关资源
最近更新 更多