循环遍历从索引开始的对象

时间:2016-10-12 02:51:14

标签: javascript

我有一个聊天室列表的对象,其中键是聊天室名称,值是对聊天室的引用。我想一次为用户提供50个房间的房间。但我不知道如何用一个物体来完成这件事。

假设您要循环播放

var obj = {
   "a" : 1,
   "b" : 2.
   "c" : 3
}

但是从" b"开始,最后只有" b"和" c"被访问。可以这样做,包括使用某种地图或桌子吗?

3 个答案:

答案 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
  }
}