【问题标题】:store values of an object in a variable将对象的值存储在变量中
【发布时间】:2013-01-15 15:38:01
【问题描述】:

我正在尝试存储 packageid 等于 9 的对象的所有 dataid,请在此处查看我在 jfiddle 上的代码:

http://jsfiddle.net/Tcwgf/

这似乎没有返回任何东西:

 $("h2").html(dataids);

【问题讨论】:

  • 使用 JS fiddle 是一件非常好的事情,非常受欢迎,但也请在这里添加代码!
  • 为什么你同时拥有cataloguelocalproducts?您将localproducts 制作成一个对象数组,然后将该数组推入catalogue。所以当你循环catalogue时,你需要循环两次,所以你也循环了内部数组。

标签: jquery object each


【解决方案1】:

您将对象推入localproducts,然后将整个数组推入catalogue。所以最后一个数组有 1 个包含数组的项目。

据我了解您的代码,您可以删除 localproducts 数组并直接推送到 catalogue

http://jsfiddle.net/Tcwgf/2/

catalogue.push({ ... });

...

$(catalogue).each(function(){  
  if (this.packageid == 3) dataids.push(this.dataid);
});

【讨论】:

    【解决方案2】:

    我不知道这是否有帮助,但您可能想研究一下:http://api.jquery.com/jQuery.inArray/

    您可以使用它找到您的 packageid 9,然后显示您想要显示的内容,现在使用 $("h2").html(dataids);您正在尝试显示一个数组,这可能解释了为什么事情不正常;)

    【讨论】:

      【解决方案3】:

      我不确定我是否完全理解你,但我认为这就是你的目标。如果不是,请解释更多。将.map() 与.get() 一起使用,您可以获得自定义对象的数组..

      var store_products = function () {
        // get all li's that have a span.packageid with 9 as the text
        var $lis = $('span.packageid').filter(function(i,v){
             return $.trim($(v).text()) == 9;
        }).closest('li');  
      
        // get an array of objects properties you defined
        var x = $lis.map(function(i,v){
          var $itm = $(v);
          return {
               'dataid' : $itm.attr('data-id'), 
               'datapackage' : $itm.attr('data-package'), 
               'packageid' : $itm.children('.packageid').text()
          };
        }).get();
      
        // Now variable x is an array of the objects with packageid = 9
        console.log(x);
      }
      

      FIDDLE

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-09
        • 1970-01-01
        • 2021-07-11
        • 2022-01-24
        • 2015-06-13
        • 2016-01-22
        • 2012-08-30
        • 1970-01-01
        相关资源
        最近更新 更多