nodejs 删除数组子元素的方法和注意事项
spooking 归属分类: 开发 评论数: 0 个

在nodejs中,要删除数组(array )的子集元素,可以使用 pop、shift、splice 等方法弹出元素达到删除的效果。

这种方法,数组的长度同时也会发生变化。

另一种方法是使用 delete 方法 删除数组的元素,但这种方法,数组的长度不变,被删除的位置会留下一个空对象填充。

虽然这不影响 数组 forEach 遍历方法,但是在使用 for(var i=0;i<array.length;i++){} 循环的时候,会出错。

var a = [{v:'111'},{v:'222'},{v:'333'},{v:'444'}]
a.shift();
delete a[1];

a.forEach(o=>{
    console.log(o.v)
})
console.log('=========')
for(var i=0;i<a.length;i++){
    console.log(a[i].v)
} 

输出:

222
444
=========
222
\test.js:10
    console.log(a[i].v)
                     ^

TypeError: Cannot read properties of undefined (reading 'v')
    at Object.<anonymous> (D:\Spooking\Documents\@KaiFa\@Projects\FastEDU\FastEdu_ETC\platform\base\smartedu.cn\test.js:10:19)
    at Module._compile (node:internal/modules/cjs/loader:1198:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1252:10)
    at Module.load (node:internal/modules/cjs/loader:1076:32)
    at Function.Module._load (node:internal/modules/cjs/loader:911:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:22:47