6

这是代码(一个Vuex突变):

export const CREATE_PANORAMAS = (state, panoramas) => {
  console.log('building.panoramas:', state.building.panoramas)
  console.log('panoramas:', panoramas)
  state.building.panoramas.concat(panoramas)
  console.log('result:', state.building.panoramas)
} 

这是相应日志的结果:

[] // building.panoramas
[{ name: "", objectId: "5849133aac502e006c581b58" }] // panoramas
[] // result

为什么两个数组不连接?

4

3 回答 3

17

来自文档- concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。

使用 concat 的一种方法是执行以下操作

state.building.panoramas = state.building.panoramas.concat(panoramas)

或者你可以简单地

[].push.apply(state.building.panoramas, panoramas);
于 2016-12-08T08:20:04.787 回答
2

问题是您没有将连接的结果分配给state.building.panoramas@JaromandaX 指示的数组。

也可以使用rest element、spread element、解构赋值来连接两个或多个数组

[...state.building.panoramas] = [...state.building.panoramas, ...panoramas];
于 2016-12-08T08:29:04.383 回答
1

我认为您需要先将 state.building.panoramas.concat(panoramas) 分配给某些东西,或者您可以直接将其放在“结果”行

sampleArray.concat(moreValues)返回连接的数组,它不会将“moreValues”连接到 sampleArray 本身。

于 2016-12-08T08:13:42.287 回答