【问题标题】:Create multiple unique Arrays jQuery创建多个唯一数组 jQuery
【发布时间】:2013-04-30 15:21:31
【问题描述】:

所以我有一个循环,它创建了 9 个独特的按钮,具有独特的 ID 号和独特的标题。这些按钮打开一个带有复选框的模式窗口,我一直将复选框数据保存到 1 个数组中。刚刚意识到我的错误,我需要知道如何循环并创建 9 个唯一命名的数组。

当前代码:

$('.roleBtn').click(function () {
    roleName = $(this).html();        /* Get role name */
    role_ID = $(this).attr('id');     /* Get role id */
    row_Name = ('row-'+role_ID );     /* Create Row Name */
    blueBtn = ('blue-btn-'+role_ID)   /* Create Blue Button */
    var str = $(this).attr('id');       
    substr = str.split ('role-');
    the_Num = substr[1];              /* Get the role ID and split to save number in the_Num */
    modal_ID = ('modal-'+the_Num);    /* Now get the associated modal number */
    genreAry = [];                    /* My Array, I need to make 9 of these */

基本上我有一个 XSL for-each 循环,它创建 9 个按钮并将角色(+数字)添加到 id。然后我就可以通过 jQuery 获取按钮和#ids 的内容了。

<xsl:for-each select="$TalentUser/item">
    <li class="roleBtn" id="role-{position()}">
        <xsl:value-of select="sc:fld('title',.)" />
    </li>
</xsl:for-each>

我找不到如何正确命名每个新数组,您将如何获取/创建以下内容:

genreAry1 = [];
genreAry2 = [];
genreAry3 = [];

将工作代码更新到@Don McCurdy


我的 XSL 放置一个javascript函数来获取创建的按钮数量(在我的例子中为9)

<div id="talent-gender">
    <ul>
        <!-- For Each to get Talent Roles -->
        <xsl:for-each select="$TalentUser/item">
            <li class="roleBtn" id="role-{position()}">
                <xsl:value-of select="sc:fld('title',.)" />
            </li>
         </xsl:for-each>
         <script type="text/javascript">createRoleGenreArrays();</script>
    </ul>
</div>

jQuery 全局变量

var array_of_arrays = [];
var object_with_arrays = {};
var num_role_leon = 0;

获取最终循环数 (9) 的 createRoleGenreArrays 函数

function createRoleGenreArrays () {

    for (i = 0; i < numRoleAry_leon.length; i++) {
        array_of_arrays.push([]);
        object_with_arrays['genreAry'+i] = []; /* creates 9 arrays named genreAry1, genreAray2 ... */
        console.log(i);
    }
}

然后最后使用我不同的数组

$('.doneButton').click(function () {

    role_ID = role_id_saved_leon;

    var ary_Num = the_Num - 1; // <-- need to do this

$('.simplemodal-data input:checked').each(function (i) {
        alert($(this).attr('value'));
        object_with_arrays['genreAry'+ary_Num].push($(this).attr('value'));

        //alert($(this).attr('value'));
    });

【问题讨论】:

  • 你在这里设置全局变量,是预期的吗?
  • 我有全局变量,但是这个点击函数实际上是在另一个函数中,这就是我当前变量所在的地方:) 我一直在使用全局变量来保存在点击新按钮时会发生变化的数据.我意识到了这个问题,并且还在寻找如何使用 jQuery 对象来存储我的所有数据。
  • 在循环外创建一个 allArrays={},并设置 allArrays["genreAry"+the_Num] 而不是数组字面量。
  • 嗨,Dan,它创建了一个对象,但推送不起作用..您如何设想数组/对象在这里工作?

标签: javascript jquery arrays for-loop


【解决方案1】:

您是否在问如何创建任意数量的数组,而无需手动为每个数组创建变量名?如果是这样,我会考虑给他们一个封装对象或数组以使事情变得更容易。

var 
   i,
   n = 9,
   array_of_arrays = [],
   object_with_arrays = {};

for (i = 0; i < n; i++) {
   array_of_arrays.push([]);
   object_with_arrays['genreAry'+i] = [];
]

上面的代码将为您提供两种不同的方法:

[ [], [], [], ... ]
{ genreAry1: [], genreAry2: [], ... }

【讨论】:

  • 您将如何访问、推入和检索这些“对象”数组中的值?
  • 例如,object_with_arrays.genreAry1.push(...)。或者 object_with_arrays['genreAry'+i].push(...) 如果您需要在循环中执行此操作。通过调用 object_with_arrays.genreAry1[index] 检索值。
【解决方案2】:

如果您需要一系列(数字索引)数组,那么您应该使用...

...一个二维数组

【讨论】:

  • 难怪这很难弄清楚,现在阅读exforsys.com/tutorials/javascript/…之后会回到这个问题,谢谢!
  • 编辑那篇文章并没有真正帮助,它让我知道发生了什么,但我需要一些现实生活中的例子,仍然试图让 Don 的答案发挥作用
猜你喜欢
  • 1970-01-01
  • 2019-10-31
  • 1970-01-01
  • 2016-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
相关资源
最近更新 更多