Javascript 在给定索引处改变数组对象

Javascript 在给定索引处改变数组对象,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,我想设置一个复制的数组,其中一个对象通过一次变异而改变 我将用代码解释它: 组件具有数组v-model,要修改索引处的对象,我们必须变异所有arary: computed: { array: { get() { return this.$store.state.array; }, set(value) { this.$store.commit('updateArray', value);

我想设置一个复制的数组,其中一个对象通过一次变异而改变

我将用代码解释它:

组件具有数组
v-model
,要修改索引处的对象,我们必须变异所有arary:

computed: {
    array: {
        get() {
            return this.$store.state.array;
        },
        set(value) {
            this.$store.commit('updateArray', value);
        },
    },
},

onObjectDropped(event) {
    // That will mutate array = setter will be called
    this.array = [...this.array];
    // We take an index of array at which we want to assigne object from 'otherArray'
    this.array[index] = this.otherArray[selectedIndex].elements[elementsIndex]
},

我想将第二行从
onObjectDropped
方法移到第一行,在第一行中我们创建它的副本,以便只对数组进行一次变异,因为setter不会使用其他数组中的新值修改数组。

…我想从
onObjectDropped
方法中移动第二行,并将其添加到第一行。。。。问题是什么?默认情况下,Vue不会检测到数组索引的更改。为此,您需要使用该方法(在您的上下文中,该方法在
this.$set
中也有别名)。在您的情况下,可以使用
this.$set(this.array,index,this.otherArray[selectedIndex].elements[elementsIndex])
,Vue将检测到更改。