考慮以下幾點:獲得下鍵中的一組在一個Javascript對象鍵(圓形)的
var obj = {a:1, b:2, c:3, d:4, e:5, f:6};
注意,這不是一個數組(除非它是在JS和有一種方法來映射他們)
我現在有一個要求得到下一個關鍵,給定一個關鍵。它也需要是「通告」。所以findNext('c')
應d
,而findNext('f')
應a
這裏是我想出了:
var obj = {a:1, b:2, c:3, d:4, e:5, f:6};
console.log (findNext('e',obj), " is after e");
console.log (findNext('f',obj), " is after f");
console.log (findNext('a',obj), " is after a");
function findNext (key,obj)
{
var size = Object.keys(obj).length;
var i;
for (i=0; i<size; i++)
{
if (Object.keys(obj)[i] == key)
break;
}
i = (i + 1) % size;
return Object.keys(obj)[i];
}
有沒有更好的方式來做到這一點,因爲所有鍵哈希?我可以避免不必迭代到X找到下一個(X)?
感謝
定義*「下一個」 *。對象屬性的順序並不一致,這取決於它們是如何構建的,不能依賴 – charlietfl
爲什麼不只是做一個'Object.keys(obj).length'和'if size == Object.keys(obj).length - 1,size = 0?' –
不太確定發佈到這個問題的答案和評論發生了什麼?他們消失了 - 也許是因爲有人選擇投票結束這個問題? charlietfl - 是的,我同意 - 在迭代時,接下來將是該特定系統中的下一個。 A. Lau:那就是我在第二到最後一行所做的事情? (%而不是if) – user1361529