我有一个聊天室列表的对象,其中键是聊天室名称,值是对聊天室的引用。我想一次为用户提供50个房间的房间。但我不知道如何用一个物体来完成这件事。
假设您要循环播放
var obj = {
"a" : 1,
"b" : 2.
"c" : 3
}
但是从" b"开始,最后只有" b"和" c"被访问。可以这样做,包括使用某种地图或桌子吗?
答案 0 :(得分:1)
您不应该依赖对象键进行排序。虽然大多数浏览器(如果不是全部)都将它们排序。
因此,如果你想信任浏览器,你可以添加一个计数器变量,并在计数器到达你想要的任何东西后开始做东西。您可以使用Object.keys()
获取对象的长度(返回一个数组)。混合两者,你可以这样做:
var object = {
a: 1,
b: 2,
c: 3
};
var keys = Object.keys(object);
var counter;
for (counter = 0; counter < keys.length; counter++) {
if (counter < 1) continue; // Skip until the second element
console.log(object[keys[counter]]);
}
如果您事先不知道密钥的位置,可以添加一个标记变量并在到达所需密钥时将其激活,如下所示:
var keys = Object.keys(object);
var counter;
var start = false;
for (counter = 0; counter < keys.length; counter++) {
if (keys[counter] === 'b') start = true;
if (!start) continue;
console.log(object[keys[counter]]);
}
答案 1 :(得分:0)
请参阅有关for...in
循环的MDN帖子:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in
基本上,您无法保证对象内部的键将被迭代的顺序。所以跳过某个&#34;索引的想法&#34;根本不适用。我认为您需要遵循评论中的建议,并保留您感兴趣的那些键的数组,或者找出一种方法来快速排除某些键,因为它们出现在循环中。
答案 2 :(得分:0)
试试这种方式
var obj = {
'a' : 1,
'b' : 2.
'c' : 3
};
var ignoreItems = ['a'];
for (var key in obj) {
if (ignoreItems.indexOf(key) === -1) {
// ADD YOUR CODE HERE
}
}