JavaScript 根据路径查找对象中的某个属性,并更改该属性的值

原对象

 let obj1 = {
      data: [
        {
          news_id: 51182,
          title:
            "Teslamask's American Business Relations: The government does not pay billions to build factories",
          source: "AI Finance",
          members: [
            {
              title: [
                {
                  news_id: 51184,
                  title:
                    "iPhone X Review: Innovative future with real black technology",
                  source: "Netease phone",
                },
              ],
            },
          ],
        },
      ],
    }; //原对象

根据路径修改某个属性值 函数

    /*
     * objectStr 字符串格式 顶层数据层级名称
     * path 属性的路径
     * val 要改成的值
     */
    function findMod(objectStr, path, val) {
      let props = path.split(".");
      let th = "";
      for (let i = 0; i < props.length; i++) {
        th += "['" + props[i] + "']";
      }
      //判断是对象还是字符串
      let isObj = new Function("return " + objectStr + th);
      let e = new Function();
      if (typeof isObj() == "object") {
        e = new Function(objectStr + th + "=" + val);
      } else if (typeof isObj() == "string") {
        e = new Function(objectStr + th + '="' + val + '"');
      }
      e();
    }

函数调用

根据路径修改一个字符串属性值
    findMod(
      "obj1",
      "data.0.members.0.title.0.title",
      "根据路径修改一个属性值(字符串)"
    );
    console.log(obj1);
    document.write(obj1["data"]["0"]["members"]["0"]["title"]["0"]["title"]);
根据路径修改一个字符串属性值
根据路径修改一个对象属性值
findMod("obj1", "data.0.members.0.title", '[{"a":"hhh"},{"a":"888"}]'); //修改一个子对象
    console.log(obj1);
根据路径修改一个对象属性值
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容