js对象怎么查找属性并赋值?

类别

JavaScript

条件

1.已知一个对象form.
2.已知 对象form里面的属性key链字符串变量,例如 form.data.age 它的key链是"data.age"、form.date 它的key链是"date"

问题

我想根据 对象form的key链字符串,找到具体属性并赋值,有谁知道怎么实现吗?怎么解决啊?

该回答引用chatgpt:

img


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