JavaScript删除在Object中保持“空”

时间:2018-01-02 11:49:13

标签: javascript

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

enter image description here

在后续迭代中导致不必要的行为:

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

现在,我无法使用popshift。我需要通过键删除选项,任何想法如何删除和删除此空插槽?或者甚至更好,在没有完全处理的情况下删除?

3 个答案:

答案 0 :(得分:4)

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

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

var ids = [322, 324, 435];

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

console.log(ids);

答案 1 :(得分:0)

delete的问题是它删除了对象属性,但不会重新索引数组或更新其长度。这使它看起来好像是undefined或空。

splice(start, deleteCount)从数组中删除元素:

var ids = [322, 324, 435];
ids.splice(ids.indexOf(322), ids.indexOf(322) + 1);
console.log(ids);

答案 2 :(得分:0)

使用拼接而不是删除,只需设置undefined



var ids = [1,2,3];
console.log(ids);
ids.splice(1,1);
console.log(ids);