首页 > 解决方案 > 将项目添加到数组开头的更短/更清洁的方法,同时还删除最后一个?

问题描述

我在一个使用 React 和 Redux 的项目中添加了分页功能。

当我创建一个新项目时,我希望它附加到当前列表中,同时删除列表中的最后一个项目;因为每个页面对显示的项目数量都有限制。

我想出的解决方案是这样的。

基本上,我想添加1到数组中,但也要删除3;所以新数组将是[1,2].

编辑:抱歉,但如果这是一个 redux 减速器,我必须在一行中完成所有操作,我将如何实现?

const add = 1;
const state = [2,3];

const update = [add, ...state.filter((num, idx) =>{
  return idx !== state.length - 1
})]

reducer sample:

return {
   ...state,
   items: [add, ...state.filter((num, idx) =>{
      return idx !== state.length - 1
    })]
}

我可能想多了,我觉得有一种更干净的方式来写这个..

我也不喜欢的是我什至没有使用过滤器中的第一个参数。它就在那里,所以我可以访问索引..

标签: javascript

解决方案


您可以使用slice(). 负结束索引从数组末尾向后工作

const add = 1;
const state = [2,3]

const res = [add, ...state.slice(0,-1)]
console.log(res)


推荐阅读