javascript - 将项目添加到数组开头的更短/更清洁的方法,同时还删除最后一个?
问题描述
我在一个使用 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
})]
}
我可能想多了,我觉得有一种更干净的方式来写这个..
我也不喜欢的是我什至没有使用过滤器中的第一个参数。它就在那里,所以我可以访问索引..
解决方案
您可以使用slice()
. 负结束索引从数组末尾向后工作
const add = 1;
const state = [2,3]
const res = [add, ...state.slice(0,-1)]
console.log(res)
推荐阅读
- debugging - Visual Studio 2015 调试:在我重新启动计算机之前无法加载符号
- python - 一个图中的多个显示(sns) - 从单个图中删除标题
- javascript - 请我看不懂下面代码的第二行和第三行
- python - 使用 XMLRPC 创建带有标签的 WordPress 帖子
- r - 带有变量 magrittr 的管道
- javascript - 为什么 Array.prototype.includes.bind 行为异常?
- c# - 分号后不包含逗号的匹配值
- mysql - 哪种方法更好?
- javascript - 我的 javascript 文件未执行,其中包括表单刷新
- jmeter-5.0 - “如何使用 VPN 服务器在 Jmeter 中录制脚本”