vue用splice给数组动态循环添加对象踩坑

博客讲述了在JavaScript中动态向数组中插入对象时遇到的问题,即如何确保插入的对象在数组中保持唯一性。作者通过示例代码展示了错误的实现方式导致的多个对象被错误地添加了属性,然后提出了解决方案,即为每个插入的对象添加唯一的ID属性,从而避免了属性重复添加的问题。最后,作者希望了解这个问题背后的原理并寻求更深入的理解。
摘要由CSDN通过智能技术生成

动态向数组中添加对象,例如:

//比如说这是一个后台返回的数组
list: [{
						'name': '安全策划',
						'number': 4
					},
					{
						'name': '安全策划',
						'number': 4
					},
					{
						'name': '安全策划',
						'number': 4
					},
					{
						'name': '安全策划',
						'number': 4
					},
					{
						'name': '安全策划',
						'number': 4
					},
					{
						'name': '安全策划',
						'number': 4
					}
				],

但因为前端效果,我想得到如下数组:

list: [{
						'name': '安全策划',
						'number': 4
					},
					{
						'name': '安全策划',
						'number': 4
					},
					{},
					{
						'name': '安全策划',
						'number': 4
					},
					{
						'name': '安全策划',
						'number': 4
					},
					{},
					{
						'name': '安全策划',
						'number': 4
					},
					{
						'name': '安全策划',
						'number': 4
					},
					{}
				],

错误示例:

var obj = {};
for (var i = 0; i < this.list.length; i++) {
				if ((i + 1) % 3 == 0) {
					this.list.splice(i, 0, obj);
				}
			};
			this.list.push(obj);

好了,现在想要的数组也得到了。但现在有个问题,就比如我点击事件后想给下标为‘2’的对象添加一个属性,但当我操作后我发现下标‘2,5,8’都添加了该属性,但我现在只需要‘2’有该属性,所以这就是一个问题了。

正确示例:

尝试了好久后感觉其实很简单,就是添加的时候对象相同而已,只需要每次添加的对象不相同就很完美。正确示例:

var id = 0;
for (var i = 0; i < this.list.length; i++) {
				if ((i + 1) % 3 == 0) {
					id = id+1;
					let obj = {
						'id':id
					};
					this.list.splice(i, 0, obj);
				}
			};
			this.list.push({});

这样就可以了,虽然不知其所以然,但确实解决了这个问题。

最后也希望知其所以然的大佬不吝赐教,拜谢!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值