如何使用Lodash移除嵌套对象数组中指定索引的元素?
解决移除数组指定索引元素的问题
嘿,我完全懂你碰到的这个坑——用_.unset()处理数组元素时,它本质上是把数组对应索引的属性给删掉了,但数组的长度并不会自动调整,所以你才会看到数组还是显示2个元素(其中第一个变成了empty占位)。
正确的解决方案有两种,看你偏好原生JS还是Lodash:
1. 原生JavaScript splice() 方法
这是处理数组元素移除最直接的方式,它会直接修改原数组,移除指定位置的元素并自动调整数组长度:
// 移除索引0的元素,第二个参数1表示只删除1个元素 data.owner.kyc.splice(0, 1);
执行后,data.owner.kyc就会变成只包含原第二个元素的数组,长度也会变成1。
2. Lodash _.pullAt() 方法
如果你习惯用Lodash,_.pullAt()是专门为数组索引移除设计的方法,它会修改原数组并返回被移除的元素:
// 移除数组中索引为0的元素 _.pullAt(data.owner.kyc, 0);
这个方法比_.unset()更适合数组场景,因为_.unset()的定位是删除对象的属性,而非处理数组元素。
为什么_.unset()效果不佳?
当你执行_.unset(data.owner.kyc, 0)时,它只是把数组对象的0这个属性键删掉了,数组会变成类似[empty, {...}]的状态——虽然第一个元素不存在了,但数组的length属性还是保持原来的2,所以看起来元素数量没变化。
内容的提问来源于stack exchange,提问作者Malik Bagwala
相关产品推荐
相关产品推荐

