首页 > 解决方案 > 如何通过特征将对象从一个数组移动到另一个数组?

问题描述

我正在尝试将对象从一个数组移动到另一个数组。可以将其想象为将朋友从非朋友添加/移动到朋友。我有两个数组,如下所示,我试图通过它的“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;

哪个移动了错误的对象...

标签: javascriptarrays

解决方案


使用 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;
}

请参阅 Mozilla 上的拼接文档


推荐阅读