我需要从嵌套对象访问“ isTouched”属性。面临的挑战是该属性可能显示为以下形式:
form: { CHANGES: { isTouched: true/false } }
或
form: { 'formName': { isTouched: true/false } }
通过以下方式直接访问第一个即可
:form.CHANGES.isTouched
但是,我希望有一种方法可以同时满足两种情况,同时考虑到表单名称将根据所使用的任何表单而改变。
我考虑过收集所有表单名称并循环遍历它们,但我认为这不是很有效。
答案 0 :(得分:2)
我不是100%理解这个问题,但是这样的事情对您有用吗?
k = Object.keys(form)[0]
form[k].isTouched
答案 1 :(得分:1)
您可以使用Object.keys()
,这将为您提供对象自己的属性名称的数组。然后,您可以使用索引简单地访问第一个对象名称:
var form = { 'formName': { isTouched: true/false } }
var o = Object.keys(form)[0];
console.log(form[o].isTouched);
答案 2 :(得分:0)
您在这里:
/**
* Returns the value of the isTouched property from provided object.
* If formName specified, the value will be retrieved from the o[formName] sub object, otherwise from the default sub object accessed by key CHANGES
*/
function getIsTouched(o, formName){
return o[formName] ? o[formName].isTouched : o.CHANGES.isTouched
}