gpt4 book ai didi

循环中的 Javascript 对象属性不删除

转载 作者:搜寻专家 更新时间:2023-10-30 22:03:21 24 4
gpt4 key购买 nike

我无法理解此 javascript 代码的行为。

const devices = searchResult.results.forEach(device => {
const temp = Object.keys(device.fields);

for(var property in temp) {
if(device.fields.hasOwnProperty(property)) {
if (!usedPropertiesAcrossModels.has(property)) {
delete device.fields[property];
}
}
}
}

如果 javascript 对象不属于某个集合,我会尝试删除这些键。我已经通过调试器,我知道集合中只有一个元素,device.fields 中有 15 个元素。无论如何,device.fields 中没有任何内容被删除,我不知道为什么。此外,在我退出循环之前,temp 似乎是未定义的。 Property 始终未定义,即使临时有项目!这没有任何意义。

最佳答案

searchResult = {};
searchResult.results = [{
fields:{
name: 'hello',
type:'gekko',
random:'randomString'
}
}
]
usedPropertiesAcrossModels = {
name: 'hello',
random:'hello'
}


const devices = searchResult.results.forEach(device => {
const
temp = Object.keys(device.fields).map((property)=>{
if(device.fields.hasOwnProperty(property)) {
if (!usedPropertiesAcrossModels.hasOwnProperty(property)) {
delete device.fields[property];
}
}
})


})
console.log(searchResult)

使用 map 解决了这个问题,因为在您的情况下,for in 给出了索引而不是对象的键。或者正如 martin 所说,您也可以考虑使用 for of。

关于循环中的 Javascript 对象属性不删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49926400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com