Javascript 无法删除对象属性?

Javascript 无法删除对象属性?,javascript,Javascript,我有一个forEach首先检查属性是否存在,然后删除它。然后,如果未在existingParams中定义该属性,则会使用新值再次将其追加。看起来是这样的: parameters = parameters || {}; let existingParams = this.getUrlParameters(); _.forEach(parameters, function (value, key) { if ((value !== null || typeof valu

我有一个
forEach
首先检查属性是否存在,然后删除它。然后,如果未在
existingParams
中定义该属性,则会使用新值再次将其追加。看起来是这样的:

parameters = parameters || {};

let existingParams = this.getUrlParameters();

 _.forEach(parameters, function (value, key) {
            if ((value !== null || typeof value !== 'undefined')
                && existingParams.hasOwnProperty(key)
            ) {
                //First console.log

                console.log("Deleted!: " + existingParams[key])

                delete existingParams[key];
                return;
            } else if (value === null || typeof value === 'undefined') {
                return;
            }

            //Second console.log

            console.log(existingParams);

            if ( ! existingParams.hasOwnProperty(key)) {
                Object.defineProperty(existingParams, key, {
                    value: value,
                    enumerable: true,
                    configurable: true
                });

                return;
            }

            existingParams[key] = value;
        });
问题是它从不删除一个参数
delete existingParams[key](第一个if语句)。在第一个console.log中,我看到正在删除正确的参数。但是在第二个console.log中,参数仍然存在

这怎么可能

现有参数例如:
{minPrice:“1021”,maxPrice:“2751”,page:1}


参数例如:
{minPrice:1301,maxPrice:3081}

你能提供一些
参数和
现有参数的示例值吗?
?是的,请稍等,因为:我不太明白你的问题。从我看到的情况来看,您想检查
parameters
中的键是否位于
existingParams
中。如果是,请将其从现有参数中删除。我在JSBin中尝试了这个,您的函数运行正常。对于对象示例,第二个console.log甚至从未被触发。在每次迭代开始时,if/else检查中的
return
语句正在停止正在执行的代码的第二部分。您能从更广泛的意义上明确您想要做什么吗?@Jenssen我看不出您需要如何删除该属性-只需用新值覆盖它们。没有
delete
,没有
Object.defineProperty
,只有一个循环和一个赋值-甚至是微不足道的
Object.assign(现有参数、参数)