给定一个表示对象中属性路径的 JavaScript 字符串使用点表示法(例如“a.b”),目标是将此字符串转换为对所需属性的实际引用object.
完成此转换的一种简单方法是使用 eval() 函数。虽然出于安全原因通常不鼓励使用 eval(),但它适用于这种特定场景,因为输入字符串是受控的并且期望遵守特定语法。代码只需使用 eval("obj" string) 即可获取所需的属性引用。
另一种替代方案,不太简洁,但可能更简洁高效且稳健的方法涉及将点符号字符串转换为键名称数组(例如,[“a”,“b”]),然后使用该数组作为引用路径:
const keyArray = dotNotationString.split('.'); const value = obj[keyArray[0]][keyArray[1]];
第三个选项是创建一个使用输入字符串导航对象的递归函数:
function getPropertyByDotNotation(obj, string) { if (!obj) { return undefined; } if (!string || string.length === 0) { return obj; } const [key, ...rest] = string.split('.'); return getPropertyByDotNotation(obj[key], rest.join('.')); }
这种递归方法提供灵活性并处理任意对象深度。
方法的选择取决于具体要求和性能考虑。当使用可信输入和目标简单性时,eval() 可能是合适的。对于存在性能问题或更复杂的输入验证的场景,数组或递归方法提供了可靠的替代方案。
以上是如何将 JavaScript 点符号字符串转换为对象引用?的详细内容。更多信息请关注PHP中文网其他相关文章!