【问题标题】:Iterate over an object properties with a property length being equal a number in JQuery在 JQuery 中迭代属性长度等于数字的对象属性
【发布时间】:2019-07-15 03:16:05
【问题描述】:

假设我有一个对象const a = { length: 10, b: "c"}

现在我想使用$.each() 函数迭代对象的属性。

但该函数会将我的对象视为一个数组,因为存在lenght 属性。在这种情况下我该怎么办?

谢谢。

【问题讨论】:

  • 什么意思,它认为对象是一个数组?似乎在这里工作得很好jsfiddle.net/o6bw13yv(尽管你可能会考虑完全放弃 jQuery,标准的内置方法工作得很好)
  • Object.keys(a) 将返回键的数组。然后你可以遍历它。
  • 它应该被认为是一个普通的对象,jQuery 工作的魔法会将它视为一个可迭代对象
  • jQuery 不检查 length 属性。我猜它正在做a instanceof Arraytypeof a[Symbol.iterator] === "function"
  • @CertainPerformance,如果您可以提供您在评论中输入的内容作为答案,我会接受。这是我一直在寻找的。谢谢。

标签: javascript jquery arrays object ecmascript-6


【解决方案1】:

这将在纯 JS 中完美运行:

Object.keys(a).forEach(key => /* do something */);

如果你真的想为此使用 jQuery:

$.each(Object.keys(a), (i, key) => /* do something */);

【讨论】:

    【解决方案2】:

    您可以通过检查键名来跳过长度属性。

    for (let key in a) {
        If (key !== ‘length’)  { do stuff }
    }
    

    【讨论】:

    • 能否提供一个 jquery 实现,好吗?
    猜你喜欢
    • 2023-03-24
    • 2019-07-13
    • 2010-11-08
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多