简体   繁体   English

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

[英]Insert or update object in Array Javascript

I am trying to insert or update already existed object in an empty Array in Vue.js: 我正在尝试在Vue.js的空数组中插入或更新已存在的对象:

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

I am getting the data from a child component: 我从子组件获取数据:

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

I am receiving the data correctly, I just don't seem to insert or update them correctly at the given index: 我正确地接收了数据,只是似乎没有在给定的索引处正确地插入或更新它们:

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

This will create a separate object and I want to have title and description in one object. 这将创建一个单独的对象,而我想在一个对象中包含标题和描述。 What to do? 该怎么办?

You need to use the given index param to update particular object fields in the additionalFields array. 您需要使用给定的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;
  }
}

Also passing multiple arguments to emit doesn't work so you need to wrap them in an object. 另外,传递多个参数来发射不起作用,因此您需要将它们包装在一个对象中。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM