es6常用方法来解决功能需求

前言:

es6常用方法来解决功能需求。

1、出现复杂的json字符串如何去解析?

比如:下面这个字符串,如果用json.parse解析发现还是个字符串

javascript 复制代码
"\"[{\\\"orgId\\\":\\\"1054021138280960\\\",\\\"orgName\\\":\\\"Engineering Department\\\"},{\\\"orgId\\\":\\\"1054021253648896\\\",\\\"orgName\\\":\\\"Project Team A\\\"}]\"";

解决方法

思路就是通过多级解析来解决问题,如果还是json字符串就在解析,如果不是就证明我们解析成功了。

封装方法:

javascript 复制代码
parseMultiEscapedJSON(str) {
      try {
        // 可能需要多次解析直到得到最终对象
        let result = str;
        while (typeof result === 'string') {
          result = JSON.parse(result);
        }
        return result;
      } catch (e) {
        console.error('解析失败:', e);
        return null;
      }
    }

还有其它封装方法:

javascript 复制代码
function safelyParseJSON(str) {
    try {
        // 尝试直接解析
        return JSON.parse(str);
    } catch (e) {
        try {
            // 如果失败,尝试去除可能的多余转义
            let cleanedStr = str;
            
            // 处理多层转义情况
            while (cleanedStr.includes('\\"') && cleanedStr.startsWith('"') && cleanedStr.endsWith('"')) {
                cleanedStr = cleanedStr.slice(1, -1).replace(/\\"/g, '"');
            }
            
            return JSON.parse(cleanedStr);
        } catch (e2) {
            console.error("无法解析JSON字符串:", e2);
            return null;
        }
    }
}

// 使用示例
const result = safelyParseJSON(escapedString);
console.log(result);

2、根据多个参数,动态&拼接字段

我们实际使用中,需要循环对象的场景挺多的,二期还可以配合map啊等方法满足我们的需要

比如:`/dataPermission/queryWorkflowInfo?workFlowId={params.workFlowId}\&tenantId={params.tenantId} ` 我们拼接一个这样的字符串,可以通过方法让循环params来实现动态拼接

方法1:

javascript 复制代码
const queryString = Object.keys(params)
  .map(key => `${key}=${params[key]}`)
  .join('&');

const result = `/dataPermission/queryWorkflowInfo?${queryString}`;

方法2:

javascript 复制代码
const result = `/dataPermission/queryWorkflowInfo?${Object.keys(params).map(key => `${key}=${params[key]}`).join('&')}`;