在数组Javascript中插入或更新对象

时间:2018-08-19 15:33:57

标签: javascript arrays indexing vue.js

我正在尝试在Vue.js的空数组中插入或更新已存在的对象:

additionalFields: [
                    {
                        name: '',
                        description: ''
                    }
                ]

我正在从子组件中获取数据:

updateAdditionalTitleForm(value, index) {
            this.$emit('updateAdditionalTitle', value, index);
        },
        updateAdditionalDescriptionForm(value, index) {
            this.$emit('updateAdditionalDescription', value, index);
        }

我正确接收了数据,只是似乎没有在给定索引处正确插入或更新它们:

adaptAdditionalTitleForm(value, index) {
            this.form.additionalFields.push({ title: value });
        },
        adaptAdditionalDescriptionForm(value, index) {
            this.form.additionalFields.push({ description: value });
        }

这将创建一个单独的对象,我想在一个对象中包含标题和描述。该怎么办?

1 个答案:

答案 0 :(得分:0)

您需要使用给定的index参数来更新additionalFields数组中的特定对象字段。

adaptAdditionalTitleForm(obj) {
   if(!obj.index || (obj.index && obj.index>=this.form.additionalFields.length)){
       this.form.additionalFields.push({title:object.value,description:''}) 
   }else if(obj.index) {
   this.form.additionalFields[obj.index].title= obj.value;
  }
},

adaptAdditionalDescriptionForm(obj) {
 if(!obj.index || (obj.index && obj.index>=this.form.additionalFields.length)){
   this.form.additionalFields.push({description:obj.value,title:''})
  }else if(obj.index){
     this.form.additionalFields[obj.index].description=obj.value;
  }
}

也无法传递多个参数来发射,因此您需要将它们包装在一个对象中。

updateAdditionalTitleForm(value, index) {
    this.$emit('updateAdditionalTitle', {value,index});
},
updateAdditionalDescriptionForm(value, index) {
   this.$emit('updateAdditionalDescription',{value,index});
}