javascript - 记录嵌套对象属性的 JS 函数,其中属性作为参数传递

标签 javascript function object ecmascript-6

我有以下对象:

let a = {
    aa: {
        aaa: 1
    },
    ab: {
        aba: {
            abaa: 2
        }
    }
}

我想编写一个函数,您可以向该函数传递一个对象以及表示该对象中嵌套属性的任意数量的字符串,并让该函数输出相应的值。例如:

func(a, 'aa', 'aaa') // 1
func(a, 'ab', 'aba', 'abaa') // 2

如果参数数量固定,我就可以做到这一点,如下所示:

function func() {
    console.log(arguments[0][arguments[1]][arguments[2]])
}

有谁知道如何编写 func() 以便它接受任意数量的参数?

最佳答案

reduce参数结合使用:

let a = {
  aa: {
    aaa: 1
  },
  ab: {
    aba: {
      abaa: 2
    }
  }
}

function func() {
  console.log([...arguments].reduce((a, c) => a[c]));
}

func(a, 'aa', 'aaa');
func(a, 'ab', 'aba', 'abaa');

如果您不喜欢使用参数,请使用休息和传播...:

let a = {
  aa: {
    aaa: 1
  },
  ab: {
    aba: {
      abaa: 2
    }
  }
}

function func(...args) {
  console.log(args.reduce((a, c) => a[c]));
}

func(a, 'aa', 'aaa');
func(a, 'ab', 'aba', 'abaa');

关于javascript - 记录嵌套对象属性的 JS 函数,其中属性作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56572656/

相关文章:

javascript - 这个 JavaScript 模式是如何调用的以及如何以正确的方式使用它?

javascript - 文本区域上的 ng-model 不起作用

javascript - 返回对象的箭头函数简写

postgresql - 与没有函数包装器的查询相比,SQL 函数非常慢

javascript - 是否应该使用数组名称和索引来命名 JavaScript 对象?

java - 什么是用于存储嵌套项(如州中的城市)的良好 Java 数据结构?

Javascript - 从列表中创建数组

javascript - javascript中的自动检查复选框

javascript - 是否可以将函数链接到数组?

javascript - 映射键值以使用 javascript 创建具有嵌套对象的 json 结构