Skip to content
数组 根据key字段汇总NUM
js
/** 根据key字段汇总NUM */
function mergeAndSumByKeyName(data, keyName) {
    // 使用 Map 存储中间结果
    const map = new Map();

    // 遍历数据
    data.forEach(item => {
        if (map.has(item[keyName])) {
            // 如果存在,累加 NUM
            const existingItem = map.get(item[keyName]);
            existingItem.NUM += item.NUM;
        } else {
            // 如果不存在,添加新条目
            map.set(item[keyName], { qu: item.qu, NUM: item.NUM, ...item, });
        }
    });
    // 将 Map 转换回数组
    return Array.from(map.values());
}
对象 替换对象中所有匹配到的字符串

replaceText(obj,"拱北口岸","拱北")

js

/** 替换对象中所有匹配到的字符串 */
function replaceText(obj, str, to) {
    for (let key in obj) {
      if (typeof obj[key] === 'object') {
        this.replaceText(obj[key], str, to); // 递归遍历子对象
      } else if (typeof obj[key] === 'string') {
        // 判断是否包含 
        if (obj[key].includes(str)) {
          obj[key] = obj[key].replace(str, to);
        }
      }
    }
}
对象 对象中所有number类型key进行toFixed

formatObjFixed(obj,1)

js
/** 对象中所有number类型key进行toFixed */
function formatObjFixed(obj, num) {
    for (let key in obj) {
      if (typeof obj[key] === 'object') {
        this.formatObjFixed(obj[key], num); // 递归遍历子对象
      } else if (typeof obj[key] === 'number') {
        // 判断是否包含 
        obj[key] = obj[key].toFixed(num);
      }
    }
}
对象 对象中所有number类型key进行Math.round
js
/** 对象中所有number类型key进行Math.round */
function roundDecimalValues(obj) {
    return JSON.parse(JSON.stringify(obj), (key, value) => {
      if (typeof value === 'number' && !Number.isInteger(value)) {
        return Math.round(value);
      }
      return value;
    });
}
字符串 正则转义纯字符串
js
// 使用正则表达式替换特殊字符
escapeRegExp(str) {
   return str ? str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') : false; 
}

// 调用 str1:长?江 str2:长?江流域 -> true
// 会将str1先格式化后当成纯字符去匹配
new RegExp(this.escapeRegExp(str1), 'g').test(str2)