如何在jquery中创建数组?


69
$(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()}


你能澄清一下吗?我认为没有人真正理解您要问的问题。
Sasha Chedygov

jQuery不是一种语言,而是您应该在javascript中问如何做到这一点。
Jaskaran Singh 2015年

Answers:


128

一些想法:

  • 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 ... <a href="routing.php?p=2&SortBy=error"> 2 </a>?
vick 2010年

据我了解:load(url,data)命中URL并作为POST发送数据。如果您想遇到routing.php?p = 2&sortBy =错误,则需要将其添加到URL(“ routing.php?p =“ + pageNo +”&sortBy =“ + sortBy)。那,或者使您的PHP脚本从$ _POST或$ _REQUEST而不是$ _GET读取。
ojrac

1
似乎这里var data = {};需要更改为var data = [];
Andris 2014年

jQuery是否不是javascript的包装,而不是“插件”?
Ed DeGagne '16

插件是一个奇怪的词,是的。我想说的是“图书馆”。
ojrac

28

您可能会混淆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)

“关联数组”,也称为哈希或映射,从技术上讲是Javascript *中的对象,其工作方式如下:

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

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


*从技术上讲,所有内容都是Javascript中的Object,请将该参数放在一边。;)


格式错误的箭头功能参数列表
朱利安·巴尔迪

??如果您专心阅读,则不应该是Javascript…
deceze

10

不清楚你的意思。也许:

<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>

1
是的,但是他也来自php,数组中的哈希也是如此……在JavaScript中,它也不是“哈希”,它只是一个对象。+1 -这是我的问题的解释以及..
gnarf

2
我知道JavaScript数组和对象之间的区别。但是,似乎问题的实质是动态地构造参数。
马修·弗拉申

7

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

//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


0

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

您可以创建一个值列表或一个键列表,而这些都与jquery无关,这是纯JavaScript


...换句话说,数组是数组,哈希是哈希。使用适合情况的任何东西,它们是不可互换的。
deceze

0

这是我使用的示例。

<script>
  $(document).ready(function(){
      var array =  $.makeArray(document.getElementsByTagName(“p”));
      array.reverse(); 
      $(array).appendTo(document.body);
  });
</script>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.