一种更短/更干净的方式将项添加到数组的开头,同时删除最后一个



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

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

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

基本上,我想将1添加到数组中,但也要删除3;因此新的阵列将是CCD_ 3。

编辑:很抱歉,但如果这是一个redux reducer,我必须在一行中完成所有事情,我该如何完成?

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
    })]
}

我可能想得太多了,我觉得有一种更干净的写作方式。。

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

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

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

要删除数组的最后一个元素,请使用array pop方法,并将元素添加到第一个位置,请使用数组unshift方法。

const add = 1;
const state = [2, 3];
state.pop();
state.unshift(add);
console.log(state);

最新更新