【问题标题】:jQuery .each() array in .each() array.each() 数组中的 jQuery .each() 数组
【发布时间】:2015-03-19 08:02:11
【问题描述】:

听到一个对象数组

 advancedParams = [];
 advancedParams["cost"] = [];
 advancedParams["cost"]["from"] = 10;
 advancedParams["cost"]["to"] = 100;

但是 .each() 看不到第二个数组

 $.each(advancedParams, function( idx, obj ) {
     console.log(idx); // shows cost
     console.log(obj ); // shows [from: "10", to: "200"]
     $.each(obj, function( key, value ) {
         console.log(key); // nothing
         //each have no iterations, why?
     });
 }

【问题讨论】:

  • {cost: [from: "10"], [to: "200"]} 我猜是无效的。
  • 发现问题。通过 advancedParams = {} 进行数组绑定,但第二个是通过 advancedParams[param] = [] 绑定的,当 type advancedParams[param] = {} 时它开始工作。

标签: jquery arrays each


【解决方案1】:

这是绝对无效的:

{cost: [from: "10"], [to: "200"]}

因为在数组中,您不能将值以: 分隔。

您应该分配一个对象,而不是声明一个数组[]

advancedParams = {};
advancedParams["cost"] = {};

查看下面的演示。

var advancedParams = {};
advancedParams["cost"] = {};
advancedParams["cost"]["from"] = 10;
advancedParams["cost"]["to"] = 100;

$.each(advancedParams, function(i, obj) {
  console.log(obj); // results in "Object {from: 10, to: 100}"
  $.each(obj, function(i, item) {
    console.log(item); // results in "10, 100"
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

【讨论】:

  • 更新数组。只是我试图更简单地解释。
  • 是的。问题出在 advancedParams["cost"] = [ ]
【解决方案2】:

您的对象定义无效。看看下面的错误信息:

将其存储在这样的对象中:var obj = { from: 10, to:200}。或者,如果您想要一个对象数组,请这样做:var arr =[{from:10,to:200},{from:1, to:300}]

【讨论】:

    猜你喜欢
    • 2013-09-28
    • 1970-01-01
    • 2011-03-01
    • 2011-11-18
    • 2013-08-02
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多