我有一个对象,它是聊天室列表,其中键是聊天室名称,值是对聊天室的引用。我想将房间交付给用户,一次50个房间。但我不明白如何使用对象来实现这一点。
假设您想循环遍历
var obj = {
"a" : 1,
"b" : 2.
"c" : 3
}但从"b“开始,最后只访问"b”和"c“。可以做到吗,包括使用某种映射或表?
发布于 2016-10-12 10:57:37
你不应该依赖对象键来进行排序。尽管大多数浏览器(如果不是所有的话)都会对它们进行排序。
因此,如果你想信任浏览器,你可以添加一个计数器变量,并在计数器达到你想要的任何值后开始执行操作。您可以使用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]]);
}如果您事先不知道key的位置,可以添加一个flag变量,当您到达想要的key时激活它,如下所示:
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]]);
}发布于 2016-10-12 10:57:36
请参阅关于for...in循环的MDN帖子:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in
基本上,您不能保证对象内部的键将被迭代的顺序。因此,跳过某个“索引”的想法根本不适用。我认为你需要遵循评论中的建议,要么保留一组你感兴趣的键,要么想出一种方法,当某些键出现在你的循环中时,快速排除它们。
发布于 2016-10-12 12:34:07
试试这条路
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
}
}https://stackoverflow.com/questions/39989768
复制相似问题