动态向数组中添加对象时,对象重复问题

21 篇文章 0 订阅
11 篇文章 0 订阅

动态向数组中添加对象时,对象重复问题

在这里插入图片描述
修改前代码:

          this.nodesList = [{ id: '', name: '', moneyNum: '', showInput: false }];
                const itemIdMonet = this.acceptValue.rules.map(itemIdMon => {
                    const obj = {
                        id: itemIdMon.nodeId,
                        bonus: itemIdMon.bonus
                    };
                    return obj;
                });
                console.log(itemIdMonet);
                this.processNodesName.forEach((item, index) => {
                    for (let m = 0; m < itemIdMonet.length; m++) {
                        const vals = {
                            id: this.nodesArray[index],
                            name: item,
                            moneyNum: this.nodesArray[index] === itemIdMonet[m].id ? itemIdMonet[m].bonus : '',
                            showInput: this.nodesArray[index] === itemIdMonet[m].id
                        };
                        this.$nextTick(() => {
                            this.nodesList.push(vals);
                            if (this.nodesArray[index] === itemIdMonet[m].id) {
                                this.$nextTick(() => {
                                    this.$refs.nodesList.toggleRowSelection(this.nodesList[index], true); // 添加选中
                                });
                            }
                        });
                    }
                });
                console.log(this.nodesList, 'this.nodesList');

向数组中push对象的时候,如果在一个双重for循环里的话,即使在添加的时候加过判断,数组中的对象依旧会有重复,出现的情况是:
符合条件的成功添加,不符合条件的也添加进去了
解决后:

                this.nodesList = [{ id: '', name: '', moneyNum: '', showInput: false }];
                const itemIdMonet = this.acceptValue.rules.map(itemIdMon => {
                    const obj = {
                        id: itemIdMon.nodeId,
                        bonus: itemIdMon.bonus
                    };
                    return obj;
                });
                console.log(this.processNodesName, this.nodesList, itemIdMonet, 'nodesListnodesList');
                this.processNodesName.forEach((item, index) => {
                    let flag = true;
                    for (let m = 0; m < itemIdMonet.length; m++) {
                        // 重组数据,表格中添加对象
                        if (this.nodesArray[index] === itemIdMonet[m].id) {
                            const tmpData = {
                                id: this.nodesArray[index],
                                name: item,
                                moneyNum: itemIdMonet[m].bonus,
                                showInput: true
                            };
                            this.nodesList.push(tmpData);
                            setTimeout(() => {
                                this.$refs.nodesList.toggleRowSelection(tmpData);
                            }, 0);

                            flag = false;
                            break;
                        }
                    }
                    if (flag) {
                        this.nodesList.push({
                            id: this.nodesArray[index],
                            name: item,
                            moneyNum: '',
                            showInput: false
                        });
                    }
                });
                console.log(this.nodesList, 'nodesListnodesList');
### 回答1: 你可以使用 for 循环遍历数组,然后使用 push() 方法向数组中添加对象。具体代码如下: for (let i = ; i < data.length; i++) { data[i].push({ key1: value1, key2: value2 }); } 其中,key1 和 key2 是对象的属性名,value1 和 value2 是属性值。 ### 回答2: 在methods里向data里的数组循环添加对象可以通过以下方法实现: 首先,在Vue实例中的data选项中定义一个空数组,这个数组将用于存储对象。例如: data: { items: [] } 然后,在methods选项中定义一个方法,该方法将用于向items数组中添加对象。例如: methods: { addObject: function() { var obj = { name: "item1", value: 1 }; // 定义一个对象,可以根据需求自行设定属性和值 this.items.push(obj); // 将对象添加到items数组中 } } 接下来,在模板中调用该方法,例如点击一个按钮添加对象。例如: <button @click="addObject">添加对象</button> 最后,当点击按钮,addObject方法将被调用,并将一个对象添加到items数组中。这样,每次点击按钮,都会向数组中添加一个新的对象。 需要注意的是,在Vue中,通过methods选项定义的方法可以通过this关键字访问到Vue实例中的data属性,因此可以通过this.items来访问和修改data中的items数组。 通过以上步骤,就可以在methods里通过循环添加对象到data里的数组中了。 ### 回答3: 在Vue的methods中,我们可以使用Vue提供的方法来向data中的数组循环添加对象。 首先,在data里定义一个空的数组,用来存放我们要添加对象。比如我们可以在data中定义一个数组students: ``` data() { return { students: [] } } ``` 然后,在methods中定义一个方法,用来循环添加对象到这个数组中。我们可以使用Vue提供的方法push来向数组末尾添加新的对象。比如我们可以定义一个方法addStudent: ``` methods: { addStudent() { // 创建一个新的学生对象 const newStudent = { name: '张三', age: 18, gender: '男' }; // 使用push方法将新的学生对象添加数组中 this.students.push(newStudent); } } ``` 最后,在模板中使用一个按钮来调用这个方法,实现循环添加对象的功能: ``` <button @click="addStudent">添加学生</button> ``` 当我们点击这个按钮,addStudent方法会被调用,把一个新的学生对象添加到students数组中。这样就实现了在methods里向data里的数组循环添加对象的功能。 这种方式可以重复使用,每次点击按钮都会添加一个新的学生对象数组中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值