javascript - 一种更短/更干净的方法将项目添加到数组的开头,同时还删除最后一个?

标签 javascript

我向我正在开发的一个使用 React 和 Redux 的项目添加了分页。

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

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

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

编辑:抱歉,但是如果这是一个 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
    })]
}

我可能想得太多了,而且我感觉有一种更简洁的方式来写这个..

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

最佳答案

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

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

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

关于javascript - 一种更短/更干净的方法将项目添加到数组的开头,同时还删除最后一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64547110/

相关文章:

javascript - React - 专注于使用名称输入

javascript - 使用装饰器时如何在 VueJS 中使用 Data 对象? "Expected ' this' 由类方法 'data' 使用。”

javascript - 通过单击将类添加到元素并将其删除到其他元素通过 JavaScript

javascript - 检查子元素是否没有特定的类?

javascript - Joomla 3.0 的 OpenX 2.8.10 横幅

javascript - 强制浏览器重绘图像

javascript - 为什么 document.body.scrollHeight 可以大于 document.body.offsetHeight

javascript - Backbone.js 将其绑定(bind)到 setInterval

javascript - 使用 Angular 指令仅更新 'view' 值

javascript - JQuery:如果选中启用,否则禁用