【发布时间】:2017-01-02 22:20:44
【问题描述】:
我不是说使用键使用 for 循环。
例如,如果您有一个类似的数组:
var fruitArray = ["Apples", "Bananas", "Coconuts"],
curFruit = 0;
您可以使用按钮“迭代”它,假设您有一个上一个/下一个按钮,所有这些按钮所做的就是减少/增加 curFruit 索引。
所以如果我在 Bananas 上,我可以使用 prev 按钮获取苹果:
fruitArray[0] // Apples
Bananas 的索引为 1,但 prev 按钮将索引降低 1。
那么对于一个长度未知的对象,而不使用编号索引,你怎么能做到呢?
这样说:
var fruitObject = {"Apples":"Red", "Bananas":"Yellow", "Coconuts":"Brown"};
我知道您可以设置 0、1、2 和水果名称,但这只是为了表明您不知道对象键/索引可能是什么。
所以如果我在香蕉上使用
fruitObject.Bananas // yellow
如何使用与 Array 相同的递减思路来获取 Apples?
我的问题不在于 for in 方法
我不知道为什么不清楚,这是我问题的第一行。
我想我还是找到了一个解决方案,尽管它可能不是直接/最有效的方法,我将创建一个临时的本地“查找”。
解释一下:
这是一个对象
var colorObject = {"red":"apple", "blue":"blueberries", "yellow":"banana"};
我不想用for in方法从左到右完成。
我希望能够开始/保持当前位置,就像我在 "blue":"berries" 一样,我可以在不知道 "red":"apple" 是什么的情况下跳到 "red":"apple"
我目前想到的解决方案是,是的,但具有讽刺意味的是,我会使用 for in 方法,但要创建一个查找数组。
类似
var tempArray = [];
for (var key in colorObject) {
tempArray.push(key);
}
然后我可以使用增量/减量方法从任何地方开始导航对象。
tempArray[1] 将返回“蓝色”,我可以通过 tempArray[0] 转到“红色”,这被解释为
colorObject.blue // blueberries
编辑感谢编辑让我的问题更清晰
我说得不好,所以这是我的责任。
【问题讨论】:
-
Object.keys(obj) -
@SeinopSys 是的,我明白了,但这不是 0 到 1 的顺序,甚至可能不是数字,我想知道您是否必须创建一个具有 0-# 顺序的本地临时数组按对象的顺序与键配对。
-
@RadLexus 它不是重复的,这是我问题的第一行,我知道这就是你可以使用 for 循环通过这样的对象的方式,但我问的是左/右跳跃当前对象“索引”不执行 for 循环。
-
对象元素的顺序无关紧要。我很确定,从 JS 的角度来看,对象
[a,b]与[b,a]相同,因此如果您想跟踪其元素顺序,最好使用附加数组。 -
@Wh1T3h4Ck5 谢谢这是我决定采用的方法。我不确定是否有更有效的“官方”方式来做到这一点。就像在遍历数组时跟踪进度的一种方式一样,您可能会朝任一方向前进,而不仅仅是顺序。
标签: javascript object javascript-objects