Code Copied

JavaScript中的一些有用函数(持续更新)

1. String系列

1.1 计算字符串出现的次数

巧妙的运用了split函数来获取字符串出现次数。

var output = function(id){
	return document.getElementById(id);
}

function CountSubStr(str,substr){
	return str.split(substr).length - 1;
}

output('result1').innerHTML = '计算单个字符出现次数:' + CountSubStr('2014/12/31 10:00:00','0');
output('result2').innerHTML = '计算字符字符串出现次数:' + CountSubStr('Welcome, cool!','co');

1.2 JSON对象和String对象的互转换

当然可以用JSON.parse()和JSON.stringify()方法,下面的代码在没有jquery.js和json2.js的情况下可以使用。

// JSON转换为Strng
function json2str(o) {
    var arr = [];
    var fmt = function (s) {
        if (typeof s == 'object' && s != null) return json2str(s);
        return /^(string|number)$/.test(typeof s) ? "\"" + s + "\"" : s;
    };
    for (var i in o) arr.push("\"" + i + "\":" + fmt(o[i]));
    return '{' + arr.join(',') + '}';
}

// String转换为JSON
function str2json(str) {
    var o = eval('(' + str + ')');
    return o;
}

var jsonData = {
    sonpoId: 111111,
    dealerCode: 222222,
    storeCode: 333333,
    businessCode: 444444,
    generalInputData: 555555,
    pastingData: 666666
};

var strData = "{ \"sonpoId\": \"11111\", \"dealerCode\": 22222, \"storeCode\": 33333, \"businessCode\": 44444, \"generalInputData\": 55555, \"pastingData\": 66666 }";

document.getElementById('result1').innerHTML = 'JSON转换为Strng:' + json2str(jsonData);
document.getElementById('result2').innerHTML = 'String转换为JSON:' + str2json(strData).sonpoId;

2. Date系列

2.1 计算2个日期相差的天、星期、月、年

function DayDiff(date1, date2) {
    
    return parseInt(Math.abs(date1 - date2) / 1000 / 60 / 60 / 24);
}

function WeekDiff(date1, date2) {
    return DayDiff(date1, date2) / 7;
}

function MonthDiff(date1, date2) {
    return DayDiff(date1, date2) / 30;
}

function YearDiff(date1, date2) {
    return DayDiff(date1, date2) / 365;
}

var date1 = new Date(2012, 1, 1);
var date2 = new Date(2014, 11);

document.getElementById('result1').innerHTML = 'date1,date2相差天数:' + DayDiff(date1,date2);
document.getElementById('result2').innerHTML = 'date1,date2相差周数:' + WeekDiff(date1,date2);
document.getElementById('result3').innerHTML = 'date1,date2相差月数:' + MonthDiff(date1,date2);
document.getElementById('result4').innerHTML = 'date1,date2相差年数:' + YearDiff(date1,date2);

3. Array系列

4. Event系列