【发布时间】:2018-04-17 14:42:20
【问题描述】:
我有一个具有各种键值的对象(简化):
const params = {
dev: {
api: {},
iot: {},
},
test: {
api: {},
iot: {},
}
};
我想通过 Object.keys().forEach 函数填充:
Object.keys(params).forEach(key => {
params[key].iot.keyName = `/firstURL/`;
params[key].api.anotherKeyName = `/url/var2`;
});
目前,它按预期填充,但如果我从 params 对象中删除密钥(API/IOT),我会收到 undefined 错误。
我的想法是检查是否首先定义了键,如果没有(实际上永远不会),则使用默认值:
Object.keys(params).forEach(key => {
params[key].iot.keyName = params[key].iot.keyName || `/firstURL/`;
params[key].api.anotherKeyName = params[key].api.anotherKeyName || `/url/var2`;
});
我从params 对象中删除键的原因是它们总是动态生成的(取决于您所处的环境)。
当我检查它是否存在时,为什么会收到 keyName 未定义错误,如果不存在,请为其赋值?
非常感谢。
【问题讨论】:
-
你有什么问题?
-
"...但是如果我从 params 对象中删除密钥 (API/IOT),我会收到未定义的错误。" 您何时以及如何删除密钥(也就是说,属性)?请使用 minimal reproducible example 来更新您的问题,以展示问题,最好是使用 Stack Snippets(
[<>]工具栏按钮;here's how to do one)可运行。 -
道歉,补充 :)
-
params[key].iot不存在,因此您正在尝试访问未定义对象的属性
标签: javascript object foreach