首页 > 其他 > 详细

前端常用数据处理方法

时间:2021-05-19 17:11:31      阅读:26      评论:0      收藏:0      [点我收藏+]

在js中往数组中push数据时,总是被对象的最后一个值所覆盖

var json = { top: ‘400px‘, width: ‘500px‘, height: ‘300px‘ };
var data = {};//在外面定义对象
var datas = [];
for (key in json) {
    data.name = key;
    datas.push(data);
}
console.log(datas)

然后输出结果:

技术分享图片

原因:

技术分享图片

也就是说每次循环的时候的时候,都将data.name值给覆盖了,导致最后结果就是data.name值是最后一个数据的值。

解决办法就很简单了:

就是每次循环的时候就建立一个新的对象,

var json = { top: ‘400px‘, width: ‘500px‘, height: ‘300px‘ };
var datas = [];
for (key in json) {
    var data = {};//每次循环的时候,新建对象
    data.name = key;
    datas.push(data);
}
console.log(datas)

看起来很简单吧,但就是这点小问题,会让你一时找不出原因,所以逻辑一定要摆对。

技术分享图片

这样之后输出的结果就是你想要的结果了。

技术分享图片

将一个字符串转化为保留两位小数且有千位分隔符的格式;

//将一个字符串转化为保留两位小数且有千位分隔符的格式;

function moneyFormat(s) {
    // 保留两位小数
    // 先匹配传参是否含有除了数字和小数点的其他字符
    if (/[^0-9\.]/.test(s)) return "invalid value";
    // 匹配整个字符串,如果匹配上了,则在字符串末尾加上小数点,否则返回原字符串(说明原字符串带有小数点)
    s = s.replace(/^(\d*)$/, "$1.");
    // 给字符串末尾增加两个零
    s = (s + "00").replace(/(\d*\.\d\d)\d*/, "$1");
    // 将小数点替换为“,”
    s = s.replace(".", ",");
    // 匹配规则——四个数字加上一个“,”
    var re = /(\d)(\d{3},)/;
    // 循环匹配
    while (re.test(s)) {
        s = s.replace(re, "$1,$2");
    }
    // 匹配一个逗号“,”+两个数字
    s = s.replace(/,(\d\d)$/, ".$1");
    // 如果字符串是以小数点“.”开始,则在开头增加一个‘0’
    return s.replace(/^\./, "0.");
}

将阿拉伯数字转换成中文大写;

//将阿拉伯数字转换成中文大写;
function Arabia_To_SimplifiedChinese(Num) {
    for (i = Num.length - 1; i >= 0; i--) {
        Num = Num.replace(",", ""); //替换Num中的“,”
        Num = Num.replace(" ", ""); //替换Num中的空格
    }
    if (isNaN(Num)) {
        //验证输入的字符是否为数字
        //alert("请检查小写金额是否正确");
        return;
    }
    //字符处理完毕后开始转换,采用前后两部分分别转换
    part = String(Num).split(".");
    newchar = "";
    //小数点前进行转化
    for (i = part[0].length - 1; i >= 0; i--) {
        if (part[0].length > 10) {
            //alert("位数过大,无法计算");
            return "";
        } //若数量超过拾亿单位,提示
        tmpnewchar = "";
        perchar = part[0].charAt(i);
        switch (perchar) {
            case "0":
                tmpnewchar = "零" + tmpnewchar;
                break;
            case "1":
                tmpnewchar = "一" + tmpnewchar;
                break;
            case "2":
                tmpnewchar = "二" + tmpnewchar;
                break;
            case "3":
                tmpnewchar = "三" + tmpnewchar;
                break;
            case "4":
                tmpnewchar = "四" + tmpnewchar;
                break;
            case "5":
                tmpnewchar = "五" + tmpnewchar;
                break;
            case "6":
                tmpnewchar = "六" + tmpnewchar;
                break;
            case "7":
                tmpnewchar = "七" + tmpnewchar;
                break;
            case "8":
                tmpnewchar = "八" + tmpnewchar;
                break;
            case "9":
                tmpnewchar = "九" + tmpnewchar;
                break;
        }
        switch (part[0].length - i - 1) {
            case 0:
                tmpnewchar = tmpnewchar;
                break;
            case 1:
                if (perchar != 0) tmpnewchar = tmpnewchar + "十";
                break;
            case 2:
                if (perchar != 0) tmpnewchar = tmpnewchar + "百";
                break;
            case 3:
                if (perchar != 0) tmpnewchar = tmpnewchar + "千";
                break;
            case 4:
                tmpnewchar = tmpnewchar + "万";
                break;
            case 5:
                if (perchar != 0) tmpnewchar = tmpnewchar + "十";
                break;
            case 6:
                if (perchar != 0) tmpnewchar = tmpnewchar + "百";
                break;
            case 7:
                if (perchar != 0) tmpnewchar = tmpnewchar + "千";
                break;
            case 8:
                tmpnewchar = tmpnewchar + "亿";
                break;
            case 9:
                tmpnewchar = tmpnewchar + "十";
                break;
        }
        newchar = tmpnewchar + newchar;
    }
    //替换所有无用汉字,直到没有此类无用的数字为止
    while (
        newchar.search("零零") != -1 ||
        newchar.search("零亿") != -1 ||
        newchar.search("亿万") != -1 ||
        newchar.search("零万") != -1
    ) {
        newchar = newchar.replace("零亿", "亿");
        newchar = newchar.replace("亿万", "亿");
        newchar = newchar.replace("零万", "万");
        newchar = newchar.replace("零零", "零");
    }
    //替换以“一十”开头的,为“十”
    if (newchar.indexOf("一十") == 0) {
        newchar = newchar.substr(1);
    }
    //替换以“零”结尾的,为“”
    if (newchar.lastIndexOf("零") == newchar.length - 1) {
        newchar = newchar.substr(0, newchar.length - 1);
    }
    return newchar;
}

保留n位进行四舍五入

//保留n位进行四舍五入
function getFloat(number, n) {
    n = n ? parseInt(n) : 0;
    if (n <= 0) return Math.round(number);
    number = Math.round(number * Math.pow(10, n)) / Math.pow(10, n);
    return number;
};

前端常用数据处理方法

原文:https://www.cnblogs.com/sylei/p/14784779.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!