数组 根据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)