如何替换javascript中嵌套对象的所有键

  function renameKeys(obj, newKeys) {

        const keyValues = Object.keys(obj).map((key) => {

          let newKey = key + "1";

          if (Array.isArray(obj[key]) == false) {

            renameKeys(obj[key], newKeys);

          }

          console.log(newKey, "]", obj[key]);

          return {

            [newKey]: obj[key],

          };

        });

        return Object.assign({}, ...keyValues);

      }


      test = JSON.parse(

        '{"verifying_explanation":

               {"bus_stop":["1234"],

                "elementary_school":["1234"],

                "middle_school":["1234"],

                "high_school":["1234"]

               }

         }'

      );

      console.log(test);

      data = renameKeys(test, this);

      console.log(data);

看起来所有按键的功能都改变了,但并没有应用。我认为是因为复制主体。我不知道如何操作按键。我想替换所有键,以便在代码中应用 i18n。


所以新的密钥将类似于

let newKey = i18n.$t(key); 此短代码仅用于测试代码。请给我一些想法来解决这个问题。


暮色呼如
浏览 110回答 2
2回答

holdtom

您需要定义函数来创建新函数key value pairs,然后object从这些函数中形成一个函数。另外,检查该值是否为object, 以递归地重命名嵌套对象 -function renameKeys(obj) {  const keyValues = Object.entries(obj).map(([key, value]) => {    let newKey = key + "1";    if (typeof value === 'object' && value !== null && !Array.isArray(value)) {      value = renameKeys(value);    }    return [newKey, value];      });  return Object.fromEntries(keyValues);}test = JSON.parse('{"verifying_explanation": {"bus_stop": ["1234"],"elementary_school": ["1234"],"middle_school": ["1234"],"high_school": ["1234"]}}');console.log(test);data = renameKeys(test, this);console.log(data);

倚天杖

您无法在函数中返回新的键值对,相反,您只需向 obj 添加新键并删除旧键即可。function renameKeys(obj, newKeys) {        Object.keys(obj).map((key) => {          let newKey = key + "1";          if (Array.isArray(obj[key]) == false) {            renameKeys(obj[key], newKeys);          }          // console.log(newKey, "]", obj[key]);          obj[newKey]=obj[key];          delete obj[key];        });      }      test = JSON.parse(        `{"verifying_explanation":               {"bus_stop":["1234"],                "elementary_school":["1234"],                "middle_school":["1234"],                "high_school":["1234"]               }         }`      );            console.log(test);      data = renameKeys(test, this);      console.log(test);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript