JavaScript 删除在对象中保持“空”

yar*_*bar 0 javascript

尝试使用 删除对象中的元素delete,但是当值消失时,对象中仍然“空”。如图所示:

在此处输入图片说明

这会在以下迭代中导致不需要的行为:

for (const [key, value] of ids.entries()) {
    if (Object.values(this.widget_ids).indexOf(value) >= 0) {
        delete ids[key]
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我不能使用popshift因为。我需要按键删除的选项,知道如何删除和删除这个空插槽吗?甚至更好的是,在根本没有处理它的情况下删除它?

Nin*_*olz 8

您可以使用Array#splice,它允许在给定索引处删除一定数量的元素。

delete 删除元素并在此索引处留下一个稀疏数组,但不会更改数组的长度。

var ids = [322, 324, 435];

ids.splice(0, 1);
//         ^     index
//            ^  count of elements to delete

console.log(ids);
Run Code Online (Sandbox Code Playgroud)