使用动态属性键访问对象属性

时间:2018-10-01 10:18:44

标签: javascript

我需要从嵌套对象访问“ isTouched”属性。面临的挑战是该属性可能显示为以下形式:

form: { CHANGES: { isTouched: true/false } }

form: { 'formName': { isTouched: true/false } }

通过以下方式直接访问第一个即可

form.CHANGES.isTouched

但是,我希望有一种方法可以同时满足两种情况,同时考虑到表单名称将根据所使用的任何表单而改变。

我考虑过收集所有表单名称并循环遍历它们,但我认为这不是很有效。

3 个答案:

答案 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
}