【发布时间】:2022-01-18 03:50:15
【问题描述】:
我需要使用在字符串数组中定义的路径从记录中提取值。我想出了以下解决方案。它可以工作,但在我看来,这段代码似乎有点太复杂而难以理解。我想知道是否有更好的方法来检查一个值是否是原始类型,以及是否有人可以用更简单的方式思考来完成这项工作。
const record = {
firstName: "Joe Doe",
personalData: {
email: "joe.doe@test.com"
}
};
const path = ["personalData","email"];
const getJsonValueUsingPath = (record, path, index) => {
const isPrimitiveType =
Object(record[path[index]]) !== record[path[index]];
if (isPrimitiveType) {
return record[path[index]];
} else {
return getColumnValue(record[path[index]], path, index + 1);
}
};
我需要这个功能,因为我正在使用需要这种功能的第三方库。请不要说使用字符串数组提取对象属性值是个坏主意。
【问题讨论】:
-
“不要说提取 JSON 值是个坏主意……”:不,但是调用是个坏主意> 这个 JSON。请...阅读
json标签的使用说明。这与 JSON 无关。您的问题中没有 JSON。我从你的问题中删除了它。 -
可以像
const query = (ps) => (obj) => ps .reduce ((a, p) => (a || {}) [p], obj)一样简单。
标签: javascript arrays algorithm