类别
JavaScript
条件
1.已知一个对象form.
2.已知 对象form里面的属性key链字符串变量,例如 form.data.age 它的key链是"data.age"、form.date 它的key链是"date"
问题
我想根据 对象form的key链字符串,找到具体属性并赋值,有谁知道怎么实现吗?怎么解决啊?
JavaScript
1.已知一个对象form.
2.已知 对象form里面的属性key链字符串变量,例如 form.data.age 它的key链是"data.age"、form.date 它的key链是"date"
我想根据 对象form的key链字符串,找到具体属性并赋值,有谁知道怎么实现吗?怎么解决啊?
该回答引用chatgpt:
function setNestedPropertyValue(obj, keyChain, value) {
const keys = keyChain.split('.'); // 将属性键链字符串拆分为键数组
let currentObj = obj;
// 遍历键数组,逐级访问属性
for (let i = 0; i < keys.length - 1; i++) {
const key = keys[i];
if (!currentObj.hasOwnProperty(key)) {
// 如果属性不存在,可以选择在这里进行处理,例如抛出错误或创建新的属性
return;
}
currentObj = currentObj[key];
}
// 设置最终属性的值
const lastKey = keys[keys.length - 1];
currentObj[lastKey] = value;
}
// 示例对象
const form = {
data: {
age: 25
},
date: "2023-06-07"
};
// 根据属性键链字符串设置属性值
const keyChain = "data.age";
setNestedPropertyValue(form, keyChain, 30);
console.log(form.data.age); // 输出: 30