【问题标题】:Checking for the last element in a JQuery each function检查 JQuery 每个函数中的最后一个元素
【发布时间】:2016-04-28 04:02:18
【问题描述】:

我有一个对象,我正在使用 JQuery 的 each 函数进行迭代。但是,当我尝试使用 length 属性时,this stack overflow post 中发布的解决方案不起作用。当我尝试获取长度属性值时,我在控制台中得到了 undefined,我相信这是因为我正在迭代一个对象而不是一个数组。

我的代码:

$.each(attributes, function(key, value) {
        attrKey = key;
        attrVal = value;
        console.log(attributes.length); //returns undefined
       //do something if it is the last element
 });

【问题讨论】:

  • 对象没有长度属性...这就是你得到未定义的原因,试试Object.keys(attributes).length
  • 你应该使用 Javascripts native for...in,jQuery 对于这样的东西有点矫枉过正
  • 是的,这就是为什么我不知道如何检查它是否是最后一个元素,因为其他帖子使用长度来检查它是否是最后一个元素。由于长度在这种情况下不起作用,如何检查最后一次迭代?
  • 告诉我们attributes是什么,你可以在控制台登录:console.log(typeof attributes, attributes);
  • 查看这篇文章以获取获取对象属性数量的替代方法:stackoverflow.com/questions/126100/…

标签: javascript jquery


【解决方案1】:

改用普通的Javascript

for (var key in attributes) {
  var value = attributes[key];
  // process key,value...
}

编辑:

如果您尝试获取 object 中的最后一个键/值,则不能。 Javascript 对象是无序的,这意味着它们不会跟踪何时进行其他键/值分配。如果顺序很重要,我建议将attributes 更改为对象的array,其中每个对象都是单个键/值,或者使用第三方库,例如 - https://github.com/trentrichardson/Ordering

如果您想获取attributes 中的键数,请使用Object.keys

Object.keys(attributes).length

【讨论】:

    【解决方案2】:

    试试

    var index = 1;
    $.each(attributes, function(key, value) {
        if(Object.keys(attributes).length == index)
        { 
             // Do something
        }
        index++;
    });
    

    【讨论】:

      【解决方案3】:

      根据@PaulFrench 的评论:

      length = Object.keys(attributes).length; 
      if(n < length) {
               //do something
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-27
        • 2011-09-06
        • 1970-01-01
        • 1970-01-01
        • 2020-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多