循环遍历javascript对象,但从中间开始
Looping through an javascript object literal but start in the middle
我正在寻找一种方法来循环通过一个对象,但开始例如在中间的一些地方或任何其他值,例如:Tue, Wen, Thu, Fri, Sat, Sun, Mon而不是Sun, Mon, Tue, Wen, Thu, Fri, Sat(如在示例中使用的对象)。
//基本周概述
daysByName = {
sunday : 'Sun',
monday : 'Mon',
tuesday : 'Tue',
wednesday : 'Wed',
thursday : 'Thu',
friday : 'Fri',
saturday : 'Sat'
}
//基本循环
for (var key in daysByName) {
console.log(daysByName[key]);
}
不能依赖对象中属性的顺序,结果可能取决于浏览器(例如属性按字母顺序重新排序)。你不能依靠……为了单独捕获属性,您需要添加一个hasOwnProperties()过滤器。
你有两个选择:
-
使用数组代替对象
daysByName = [{周日:"太阳"},{周一:"星期一"},...)
-
在对象本身中输入索引:
周日:{缩写:"太阳",指数:0}
您可以尝试这样做,其中startIndex是您想要开始的startIndex
daysByName = {
sunday : 'Sun',
monday : 'Mon',
tuesday : 'Tue',
wednesday : 'Wed',
thursday : 'Thu',
friday : 'Fri',
saturday : 'Sat'
}
// Obtain object length
var keys = [];
for (var key in daysByName) {
keys.push(key)
}
// Define start index
var startIndex = 4, count = 0;
for (var key in daysByName) {
// Index is made by the count (what you normally do) + the index. Module the max length of the object.
console.log(daysByName[ keys[ (count + startIndex) % (keys.length)] ]);
count++; // Don't forget to increase count.
}
这里有一个小提琴:http://jsfiddle.net/MH7JJ/2/
相关文章:
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 如何添加类,同时开始在文本字段中输入文本
- 希望日期开始结束于while循环中的一个房间id的一个数组
- ng模型内的ng重复的ng重复开始
- 在HTML/JavaScript中,有没有一种方法可以在图像开始加载时知道图像的最终布局尺寸
- 什么'在Express中路由时,应用程序级中间件和路由器级中间件之间的区别是什么
- Yii2从点击链接开始加载模式
- Jquery幻灯片以一行左侧的图像开始,但我希望它从右端开始
- 从REST服务器和Coffeescapet前端开始
- nodejs createReadStream从第n行开始
- 处理第三方库发送的ajax请求的开始和结束事件
- 从头开始创建XLS文件
- jQuery 完美滚动 - 容器中间的开始滚动条
- 制作旋转动画:缓慢开始和结束,但在中间快速
- 定位链接滚动条从中间开始
- 只替换中间的特殊字符,而不是字符串的开始和结束
- p:lineChart如果值开始在中间的标签点没有正确显示
- 如何在加载时在中间的jPlayer中开始一首歌
- 循环遍历javascript对象,但从中间开始
- 考虑到一年从一周的中间开始,确定一周的开始和结束日期