2017-04-15 68 views
0

数组从[]开始,然后随着数字添加到数组中而不断增长。获取选择器中数组的最后2个元素(Redux)

我想创建一个选择器来提取数组的最后2个元素。

我有以下几点:

const getHistory = (state) => state.score.history; 

export const lastTwo = createSelector(
    [getHistory], 
    history => (history.length > 1 ? history.slice(-1, -3) : 0) 
); 

它显示了最初的0,但随后不输出任何价值。请指教。如果只是为了测试目的,我这样做:

export const lastTwo = createSelector(
     [getHistory], 
     history => history 
    ); 

它正确地输出数组元素,因为它们被添加。

编辑:

基于下面的答案,答案是:

export const lastTwo = createSelector(
      [getHistory], 
      history => history.slice(-2) 
     ); 
+2

'history.slice(-2)'前提是'history'是'Array'。 –

+0

谢谢 - 我总是试图不必要地使事情复杂化。 – Wasteland

回答

2

您可以使用排除开始指数结束切片。 Docs

可以使用负指数,指示从 序列末尾的偏移量。切片(-2)提取序列中的最后两个元素。

['zero', 'one', 'two', 'three'].slice(-2) 
//["two", "three"] 
相关问题