gpt4 book ai didi

Javascript - 如何使用数组作为引用来引用对象嵌套值

转载 作者:行者123 更新时间:2023-12-04 08:50:01 26 4
gpt4 key购买 nike

我正在构建一些需要处理可能具有嵌套对象的实体的表单。所以我需要接口(interface)接受一个字符串或一个字符串数组作为字段键,其中每个值的路径(如下例所示)。

const obj = {
name: "John",
role: {
id: 1,
name: "admin"
}
}

const key1 = 'name'
const key2 = ['role', 'name']

function getValueByKey (key, obj) {

if (Array.isArray(key)) {
//Get value if key is array.
} else {

return obj[key]
}
}

console.log(getValueByKey(key1, obj))
//Should output "John"
console.log(getValueByKey(key2, obj))
//Should output "admin"

最佳答案

您可以通过使用索引零处的键来传递给定对象的嵌套属性来采用递归方法。

function getValueByKey(key, obj) {
return Array.isArray(key) && key.length > 1
? getValueByKey(key.slice(1), obj[key[0]])
: obj[key];
}

const
obj = { name: "John", role: { id: 1, name: "admin" } },
key1 = 'name',
key2 = ['role', 'name'];

console.log(getValueByKey(key1, obj)); // "John"
console.log(getValueByKey(key2, obj)); // "admin"

迭代方法

function getValueByKey(key, obj) {
return [].concat(key).reduce((o, k) => o[k], obj);
}

const
obj = { name: "John", role: { id: 1, name: "admin" } },
key1 = 'name',
key2 = ['role', 'name'];

console.log(getValueByKey(key1, obj)); // "John"
console.log(getValueByKey(key2, obj)); // "admin"

关于Javascript - 如何使用数组作为引用来引用对象嵌套值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64143236/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com