# 小技巧

# 搜索筛选

分类筛选的时候, 有多种形式, 需要拼接/替换字符串, 看着是挺简单的, 但还是要记录一下

 /**
 * URL跳转,参数兼容(替换、拼接)
 * @param {Object} data => {name: value}
 */
const toURL = (data) => {
    let params = window.location.search;
    for(let i in data){
        if(params.includes(i)){
            params = params.replace(new RegExp(`${i}=.*?&|${i}=.*`), `${i}=${data[i]}&`)
        } else {
            params = params + `&${i}=${data[i]}`
        }
    }
    params = params.endsWith('&') ? params.slice(1, -1) : params.slice(1)
    window.location.href = window.location.origin + window.location.pathname + '?' + params
}

# 千分位

// 价格转换,小数点后两位,转换千分位
const priceTran = (price) => {
    return Number(price).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, ($1, $2) => $2 + ',')
}

# 其他

// 非0纯数字
val.replace(/[^\d.]/g, '').replace(/^[0]+/, '').replace(/\./g, '')

// 只限数字 & 一个小数点,且前面不为 0 & .
val.replace(/[^\d.]/g, '').replace(/^[0]+/, '').replace(/^[.]+/, '').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3')