在javascript对象数组中查找下一个/上一个项目的最佳方法?

时间:2014-09-24 16:52:37

标签: javascript coffeescript

让我们说你在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? (不知道我将如何奖励它作为奖金但希望你会感觉良好)

1 个答案:

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