【发布时间】:2012-12-21 04:16:29
【问题描述】:
已更新(问题表述有误,见下方注释)
我有一个对象,该对象具有一组以数字命名的属性,如示例所示。 “编号名称”不一定是连续的,我也不知道它们从哪里开始或结束。我知道其他属性不会用数字命名。
我知道 myObject["propName"] 和 myObject.propName 是一样的,但是我特意用第一种方式写,因为 myObject.0 看起来怪怪的,并没有得到所有编辑器的认可。
如何获得最小和最大数组索引?
所以在这种情况下
myObject["0"] = undefined
myObject["1"] = {}
myObject["2"] = undefined
myObject["3"] = {}
myObject["4"] = {}
myObject["5"] = undefined
myObject["someOtherProperty"] = {}
会给我这个
minIndex(myObject) == 1
maxIndex(myObject) == 4
在此编辑之前的所有答案
感谢您的回复。我不应该匆忙发布这个问题,应该在提交之前重新阅读它。已经很晚了,我很着急。我很抱歉。
通过实际看到我的错误陈述(使用数组而不是对象),我认为,根据我重新制定的问题的答案,我可能需要重写我的代码以使用数组而不是对象。我使用对象而不是数组的原因是另一个问题的材料。
目前的努力
我已经尝试找到一种将属性名称转换为数组然后循环遍历它们的方法,但事实证明这很笨拙。我正在寻找一种不易出错且优雅的方式。
【问题讨论】:
-
顺便说一句...您可以使用 array.splice() 从数组中删除没有丑陋洞的项目。也许这首先消除了这个问题。
-
我会结束这个问题。这些类型的问题,除了没有表现出任何研究成果外,总是以疯狂的编码竞赛(C3)告终。地球上没有足够的时间来纠正所有答案中的所有问题,如果我出于各种原因对大多数答案投了反对票,愤怒的市民可能会攻击我的家。
-
哇,一个工作日都没看这个,然后这个。相当震惊。是的,我对真正的 JavaScript 还是很陌生。此外,我认为,在我努力只给出核心问题的过程中,我可能将问题归结为不正确的问题并提出错误的问题。我将尝试审查整个事情。但真的:哎哟
-
@Esailija,您对此提出质疑是对的。重新表述的问题,在 OP 中添加了对您请求的响应
-
@Boris Callens 我更新了我的答案。让我知道这是否适用于“更新的场景”:)
标签: javascript