特定场景下的数据格式化(根据后台控制格式化的方式)

本文介绍了一种特定场景下的数据格式化方法,通过自定义规则实现日期、金额和数字的格式化,并展示了如何在加载数据后进行实时渲染。该方法利用正则表达式和字符串操作来完成格式化工作。

##特定场景下的数据格式化##
###使用biadutemplate边加载边渲染###
在加载数据之后需要先格式化再渲染,格式化四种数据:

  1. 日期:需要格式化为yy-mm-dd、yy/mm/dd等
  2. 金额:整数部分从左到右每隔三位数加一个逗号,保留几位小数
  3. 整数:从左到右每隔三位数加一个逗号
  4. 其他:按返回格式输出

###html:###

###js###

// 展示搜索返回的数据
showList: function(ret) {
    var that = this;

    var listData = JSON.parse(ret);
    var bt = baidu.template;
    var chtml = bt('bdt_list', listData.data);
    $('#div_loading').hide();
    $('#div_list').html(chtml);
 /* 
 *   格式化数据开始
 */

/* 通用格式化,number:传入的值 rule:规则 */
formatN: function(number, rule) {
    var number = number.toString();
    if (!isNaN(number)) {
        if (rule == 1) {
            return number;
        } else {
            /* 将格式化规则分类 */
            var regFl = /\(.\)$/;
            var rule_d = regFl.exec(rule)[0].charAt(1);
            if (isNaN(rule_d)) {
                /* 日期 */
                return number.substr(0, 4) + rule_d + number.substr(4, 2) + rule_d + number.substr(6, 2);
            } else if (rule_d == 0) {
                return parseInt(number).toString().replace(/(\d{1,3})(?=(\d{3})+$)/g, '$1,');
            } else {
                /* 格式化数字,千分位加分隔符,保留小数 */
                var right = '';
                var reg = /\./;
                if (!reg.test(number)) {
                    var left = parseInt(number).toString().replace(/(\d{1,3})(?=(\d{3})+$)/g, '$1,');
                    for (var i = 0; i < rule_d; i++) {
                        right += '0';
                    }
                    return left + '.' + right;
                } else {
                    return Number(number).toFixed(rule_d).replace(/(\d)(?=(\d{3})+\.)/g, '$1,');
                }
            }
        }
    } else {
        return number;
    }
},
/* 获取title */
getTitle: function(param) {
    var regT = /\,formatN/;
    if (regT.test(param)) {
        return param.split(',')[0];
    } else {
        return param;
    }
},
/* 获取格式化规则 */
getRule: function(param2) {
    var regT2 = /\,formatN/;
    if (regT2.test(param2)) {
        return param2.split(',')[1];
    } else {
        return 1;
    }
},

/* 
 *   格式化数据结束
 */

涉及到正则、字符串、数组的相应知识。格式化的方式是由后端决定的。
####约定的返回格式####
{
“state”: true,
“data”: {
“key”: “idb:act:bonusgroup”,
“data”: [{
“k0”: 20180625,
“k1”: “Centroids: 0, 1, 2, 3, 4
”,
“k2”: “Centroids: 1, 3, 6, 9, 26
”,
“k3”: “Centroids: 1, 3, 6, 9, 26

}],
“wordbook”: {
“k0”: “日期,formatN(-)”,
“k1”: “金额,formatN(2)”,
“k2”: “数字,formatN(0)”,
“k3”: “其他”
}
}
}
#####其中:#####

  1. “日期,formatN(-)”表示日期使用“-”分割,可以传其他分隔符。
  2. “金额,formatN(2)”表示保留两位小数,可以传其他整数。

新博客地址:http://www.caomage.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值