Javascript对象未定义问题

标签 javascript object

我在这里有点困惑。有人可以告诉我为什么这有效吗:

var selectedAttrs = {"mattress_size_variation":{"displayName":"Mattress Size","value":"King","displayValue":"King"},"mattress_feel_variation":{"displayName":"Mattress Feel","value":"Soft","displayValue":"Soft"}};

var selectedAttributes = JSON.parse(selectedAttrs);
return selectedAttributes.mattress_size_variation.value.toLowerCase();

//Returns "King"

但这不会并引发错误?

var selectedAttrs = {"mattress_size_variation ":{"displayName":"Mattress Size","value":"Twin","displayValue":"Twin"}};

var selectedAttributes = JSON.parse(selectedAttrs);
return selectedAttributes.mattress_size_variation.value.toLowerCase();

TypeError: Cannot read property "value" from undefined 

有什么区别,我应该如何从最后一个获得值?我假设我需要进行某种检查,因为一个可以工作,而另一个则不能。

最佳答案

第二个 JSON 中有一个未 trim 的空格,因此您必须使用方括号访问该属性:

selectedAttributes['mattress_size_variation ']

var selectedAttrs = '{"mattress_size_variation ":{"displayName":"Mattress Size","value":"Twin","displayValue":"Twin"}}'

var selectedAttributes = JSON.parse(selectedAttrs);
console.log(selectedAttributes['mattress_size_variation '].value);

关于Javascript对象未定义问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60461166/

相关文章:

javascript - 遍历所有输入框并清理它们

javascript - Jquery 跟踪下拉菜单中的更改

javascript - jQuery 不会使用 animate : top 200px function. 执行,但它会使用 animate: height 执行

javascript - 如何检查具有相同ID的div的内容,并为包含特定文本的div添加一个类?

javascript - Google map 自定义对象

C# MVC 通过 JQuery AJAX 发送对象

java - 请解释使用显式转换为对象的输出

javascript - 清除密码字段

java - 让方法修改引用而不是新对象

javascript - 为什么在 html 中插入相同的图像对象两次不起作用?