让我们说你在Javascript中有一系列的页面对象:
pages = [{uid: 1, title: 'Home'},
{uid: 2, title: 'Products'},
{uid: 3, title: 'About'},
{uid: 4, title: 'Contact'}
]
您的目标是创建一个方法,在给定当前页面的UID的情况下,返回其旁边的那个或之前的那个(由该页面中的顺序定义)。数组)。
(更新)注意:您无权访问当前页面对象,只能访问其UID,因此您无法使用indexOf()
找到其位置nextPage = function (pages, currentPageUID){...}
previousPage = function(pages, currentPageUID){...}
在Javascript中,最优雅的方法是什么?这是一个简单的问题,但我想到的解决方案并没有设法反映这种简单性,而且我确信有一种解决方案。
奖金
同样的问题,但对于Coffeescript? (不知道我将如何奖励它作为奖金但希望你会感觉良好)
答案 0 :(得分:0)
这是我能想到的最优雅的方式。我没有充实错误检查,所以如果没有,它只返回null。
nextPage = function (pages, currentPageUID){
var i = pages.findIndex(function(p) { return p.uid === currentPageUID; });
return (i > -1) ? (pages[i + 1] ? pages[i + 1] : null) : null;
}
previousPage = function (pages, currentPageUID){
var i = pages.findIndex(function(p) { return p.uid === currentPageUID; });
return (i > -1) ? (pages[i -1] ? pages[i -1] : null) : null;
}