当前位置: 首页 > 面试题库 >

用另一项替换数组项而不改变状态

金阳曜
2023-03-14
问题内容

这是我的状态示例的外观:

const INITIAL_STATE = {
 contents: [ {}, {}, {}, etc.. ],
 meta: {}
}

我需要能够以某种方式替换目录数组中的一项,知道其索引,我已经尝试过:

      return {
        ...state,
        contents: [
          ...state.contents[action.meta.index],
          {
            content_type: 7,
            content_body: {
              album_artwork_url: action.payload.data.album.images[1].url,
              preview_url: action.payload.data.preview_url,
              title: action.payload.data.name,
              subtitle: action.payload.data.artists[0].name,
              spotify_link: action.payload.data.external_urls.spotify
            }
          }
        ]
      }

action.meta.index我想用另一个内容对象替换的数组项的索引在哪里,但是我相信这只是将整个数组替换为我传递的这个对象。我也想使用,.splice()但这只会改变数组?


问题答案:

Splice改变您需要使用的数组Slice。而且您还需要concat切成薄片。

return Object.assign({}, state,  {
         contents:
          state.contents.slice(0,action.meta.index)
          .concat([{
            content_type: 7,
            content_body: {
              album_artwork_url: action.payload.data.album.images[1].url,
              preview_url: action.payload.data.preview_url,
              title: action.payload.data.name,
              subtitle: action.payload.data.artists[0].name,
              spotify_link: action.payload.data.external_urls.spotify
            }
          }])
          .concat(state.contents.slice(action.meta.index + 1))
  }


 类似资料:
  • 问题内容: 与此问题类似,但我不想将一个项目的任何出现都替换为列表的内容,而不是将另一个项目替换为另一个。 编辑:明确表示我打算替换 所有 出现的项目,而不仅仅是第一个。(对未在回答中涉及此情况的任何人表示歉意。) 问题答案: 不同的方法:当我进行替换时,我更喜欢从字典的角度进行思考。所以我会做类似的事情 最后一行是标准拼合成语。 这种方法的一个优点(劣势?)是它将处理的多次出现。 [更新:] 或

  • 我想将表单域映射到数据库域。 我有两个数组。。 一个数组是数据,包含作为键的表单字段id和作为值的表单字段值。 我还有一个数组,打算用作地图。此数组的键与表单字段相同,值为数据库字段名。 我想做的是遍历数据数组,在数据键与映射键匹配的地方,给数据数组分配一个新的键,这个键就是映射数组的值。 我的问题是怎么做?我尝试了很多不同的方法,现在我完全迷失在其中。

  • 我正在尝试使用JOLT转换https://jolt-demo.appspot.com/. 我想将所有“大师”值替换为“7.11”。 输入: 期望输出: 我似乎无法在不更改/更改数据结构的情况下进行转换或转换。当前方法: 电流输出:

  • 我想通过以下方式更改JButton的颜色: 为了进行更改,我必须补充: 但是,这会删除边缘周围的曲线,从而更改按钮的形状。有没有一种方法可以简单地改变颜色并保留其他属性?另一个例子是当你按下一个按钮而没有改变它的颜色时,颜色的改变(变暗)。 下面是一些代码,说明了这两个按钮之间的区别: 谢谢

  • 问题内容: 我有一个JavaScript数组,我想将其推送到一个新数组中。除了我不想成为。我想将所有项目推入新数组: 甚至更好: 因此,新数组现在包含各个数据数组的所有值。是否有一些速记可用,所以我不必遍历每个人,逐个添加项目? 问题答案: 使用concat函数,如下所示: 的值将为(且保持不变;为结果创建并返回一个新数组)。