jquery - 如何使用 jQuery 在 .each 循环中构建数组?

标签 jquery arrays

我正在使用 .each 循环来迭代一些 div 元素并获取其中包含的一些输入框的值。每个 div 代表一行,并有一个 Id 来表示这一点,即 plot1, plot2... 。我想将所有这些数据存储在一个数组中,但我不确定如何构造它。为了给你一个例子来说明我的意思,这里有一些代码。

有两个代表行的 div,每行有两个输入字段。

<div class="coords">
    <div id="plot1" class="plotrow">
        <div class="lat">
            <input type="text" id="plot1_lat" value="1234" />
        </div>
        <div class="long">
            <input type="text" id="plot1_long" value="4567" />
        </div>
    </div>
    <div id="plot2" class="plotrow">
        <div class="lat">
            <input type="text" id="plot2_lat" value="6984" />
        </div>
        <div class="long">
            <input type="text" id="plot2_long" value="2348" />
        </div>
    </div>
    <button type="button" id="go">Go!</button>
</div>

使用 jQuery,我想迭代这些 div 并使用以下格式将数据存储在数组中。

{ "<value from div id>": [{ 
    "lat" : <<value from input>> 
    }, { 
    "long" : <<value from input>>
    }
]};

这是我的函数,当您单击 id 为 go 的按钮时会触发该函数

$('#go').on('click', function () {
        var object = {};
        var array = [];

        $('.coords input:text').each(function () {

            var someArray = {
                "plot": [{
                    "lat": this.value
                }, {
                    "long": this.value
                }]
            };
            array.push(someArray);
        });
    });

我对数组构造有点困惑,所以我放置了一些虚拟值,但“图”应该是 div 行中的 idlatlong 应该是其中两个输入的值每个 div 行。

此外,我还发现,因为它位于 .each 循环内,所以它会创建四个数组(每个输入一个),而不是一个所有输入均按 div id 组织的数组。

我希望这是有道理的,有人可以提供一些建议吗?

最佳答案

要实现您的要求,您可以使用 map() 从 HTML 结构构建数组,如下所示:

var arr = $('.plotrow').map(function() {
  var o = {};
  o[this.id] = [
    { lat: $(this).find('.lat input').val() },
    { long: $(this).find('.long input').val() }
  ]
  return o;
}).get();

console.log(arr);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="coords">
  <div id="plot1" class="plotrow">
    <div class="lat">
      <input type="text" id="plot1_lat" value="1234" />
    </div>
    <div class="long">
      <input type="text" id="plot1_long" value="4567" />
    </div>
  </div>
  <div id="plot2" class="plotrow">
    <div class="lat">
      <input type="text" id="plot2_lat" value="6984" />
    </div>
    <div class="long">
      <input type="text" id="plot2_long" value="2348" />
    </div>
  </div>
  <button type="button" id="go">Go!</button>
</div>

我假设您正在构建的对象结构是某些外部插件所需要的,因为它可以根据您的 HTML 结构进行简化。

关于jquery - 如何使用 jQuery 在 .each 循环中构建数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46058051/

相关文章:

javascript - 仅使用 jQuery 将 return false 添加到父链接

javascript - Internet Explorer 不知道如何将选项标签添加到 jQuery 中的选择

javascript - 选择框事件

javascript - 使用 JavaScript 在数组中原生输出重复元素

jquery - AjaxSetup从不执行成功函数

javascript - d3-单击选择选项时更新条形图

iOS 9 不支持 JavaScript ...args?::JavaScript + Ionic + AngularJS

arrays - PL/pgSQL 函数插入行数组

PHP数组操作

Java - 在方法中传递数组,变量无法识别