javascript - 如何通过特征将对象从一个数组移动到另一个数组?
问题描述
我正在尝试将对象从一个数组移动到另一个数组。可以将其想象为将朋友从非朋友添加/移动到朋友。我有两个数组,如下所示,我试图通过它的“id”将一个对象(即朋友)从可能移动到当前。在下面的示例中,我试图将 Parker 从可能的 id = 7 移动到当前。
state = {
current: [
{
id: 3,
name: 'peter'
}
],
possible: [
{
id: 7,
name: 'parker'
}
]
}
我的尝试如下:
function moveObject(state, action) {
const { current, possible } = state;
const movedObject = possible.splice(action.id, 1)[0];
current.push(movedObject);
const newState = { current, possible };
return newState;
哪个移动了错误的对象...
解决方案
使用 splice 时,必须使用可以通过以下方式检索到的项目的数字索引findIndex
:
function moveObject(state, action) {
const { current, possible } = state;
const movedObjectIndex = possible.findIndex(u => u.id === action.id);
const movedObject = possible.splice(movedObjectIndex, 1);
current.push(movedObject[0]);
const newState = { current, possible };
return newState;
}
推荐阅读
- solr - SOLR 建议器返回值
- c++ - 数组的基本循环逻辑?
- python - Groupby 并用 pandas 污染字符串
- powershell - powershell基于csv重命名子文件夹中的文件
- string - 如何将 utf8 文字(即 '\u1F606')转换为符文?(不要从符文中获取 UTF8!)
- javascript - 如何在 Hichcharts 中显示所有注释?
- webpack - 使用 babel 编译到 es5 后如何实例化一个新类?
- python - WinError 2 系统找不到指定的文件
- java - Hibernate @ManyToMany 类注解配置
- html - 火狐