【问题标题】:how do I create an array in jquery?如何在 jquery 中创建一个数组?
【发布时间】:2010-04-16 02:50:08
【问题描述】:
$(document).ready(function() {
  $("a").click(function() {
    $("#results").load("jquery-routing.php", 
       { pageNo: $(this).text(), sortBy: $("#sortBy").val()} 
    );
    return false;
  });
}); 

如何在 jQuery 中创建一个数组并使用该数组而不是 { pageNo: $(this).text(), sortBy: $("#sortBy").val()}

【问题讨论】:

  • 你能澄清一下吗?我认为没有人真正理解您要问的内容。
  • Jquery 不是一种语言,你应该问如何在 javascript 中做到这一点。

标签: javascript jquery arrays


【解决方案1】:

一些想法:

  • jQuery 是一个 JavaScript 库,而不是一种语言。因此,JavaScript 数组看起来像这样:

    var someNumbers = [1, 2, 3, 4, 5];
    
  • { pageNo: $(this).text(), sortBy: $("#sortBy").val()} 是键到值的映射。如果你想要一个键或值的数组,你可以这样做:

    var keys = [];
    var values = [];
    
    var object = { pageNo: $(this).text(), sortBy: $("#sortBy").val()};
    $.each(object, function(key, value) {
        keys.push(key);
        values.push(value);
    });
    
  • JavaScript 中的对象非常灵活。如果你想创建一个对象{foo: 1},以下所有工作:

    var obj = {foo: 1};
    
    var obj = {};
    obj['foo'] = 1;
    
    var obj = {};
    obj.foo = 1;
    

总结一下,你想要这个吗?

var data = {};
// either way of changing data will work:
data.pageNo = $(this).text();
data['sortBy'] = $("#sortBy").val();

$("#results").load("jquery-routing.php", data);

【讨论】:

  • 感谢所有帮助,我将让我的下一个问题变得简单,如何将两个变量传递给我的 jquery?我想通过 PageNo 和 SortBy ... 2 ??
  • 据我了解: load(url, data) 命中 URL 并将数据作为 POST 发送。如果您想点击 routing.php?p=2&sortBy=error,您需要将其添加到 URL(“routing.php?p=”+pageNo+“&sortBy=”+sortBy)。那,或者让你的 PHP 脚本从 $_POST 或 $_REQUEST 而不是 $_GET 读取。
  • 这里好像var data = {};需要改成var data = [];
  • jQuery 不是 javascript 的包装器,而不是“插件”吗?
  • 插件是一个奇怪的词,是的。我想我的意思是说“图书馆”。
【解决方案2】:

您可能会混淆 Javascript 数组和 PHP 数组。在 PHP 中,数组非常灵活。它们可以是数字索引的或关联的,甚至可以混合使用。

array('Item 1', 'Item 2', 'Items 3')  // numerically indexed array
array('first' => 'Item 1', 'second' => 'Item 2')  // associative array
array('first' => 'Item 1', 'Item 2', 'third' => 'Item 3')

其他语言认为这两者是不同的东西,Javascript 就是其中之一。 Javascript 中的数组总是按数字索引的:

['Item 1', 'Item 2', 'Item 3']  // array (numerically indexed)

“关联数组”,也称为 Hash 或 Map,在技术上是 Javascript* 中的对象,其工作方式如下:

{ first : 'Item 1', second : 'Item 2' }  // object (a.k.a. "associative array")

它们不可互换。如果你需要“数组键”,你需要使用一个对象。如果不这样做,则创建一个数组。


* 从技术上讲,everything 在 Javascript 中都是一个对象,请把它放在一边作为这个论点。 ;)

【讨论】:

  • 错误的箭头函数参数列表
  • 嗯?如果你仔细阅读,它不应该是 Javascript……
【解决方案3】:

不完全清楚你的意思。也许:

<script type="text/javascript"> 
$(document).ready(function() {
  $("a").click(function() {
    var params = {};
    params['pageNo'] = $(this).text();
    params['sortBy'] = $("#sortBy").val();
    $("#results").load( "jquery-routing.php", params );
    return false;
  });
}); 
</script>

【讨论】:

  • 是的,但他也来自 php,其中数组也是哈希...在 JavaScript 中,它也不是“哈希”——它只是一个对象。 +1 - 这也是我对这个问题的解释..
  • 我知道 JavaScript 数组和对象的区别。然而,问题的真正意义似乎是动态构造参数。
【解决方案4】:

这是一个清晰的工作示例:

//creating new array
var custom_arr1 = [];


//storing value in array
custom_arr1.push("test");
custom_arr1.push("test1");

alert(custom_arr1);
//output will be  test,test1

【讨论】:

    【解决方案5】:

    我已经有一段时间没有使用 jquery,但您可能正在寻找这个:

    jQuery.makeArray(obj)

    【讨论】:

      【解决方案6】:

      这是我使用的一个例子。

      <script>
        $(document).ready(function(){
            var array =  $.makeArray(document.getElementsByTagName(“p”));
            array.reverse(); 
            $(array).appendTo(document.body);
        });
      </script>
      

      【讨论】:

        【解决方案7】:

        你的问题毫无意义。您在问如何将散列转换为数组。 你不能

        你可以做一个值列表,或者做一个键列表,这些都与jquery无关,这是纯javascript

        【讨论】:

        • ... 换句话说,一个数组就是一个数组,一个哈希就是一个哈希。使用适合情况的任何内容,它们不可互换。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-31
        • 2013-11-16
        • 2013-12-30
        • 1970-01-01
        • 2019-01-15
        • 1970-01-01
        相关资源
        最近更新 更多