基于JavaScript编程语音自收纳实用函数
判断是否同一天
function(timeStampA , timeStampB){
let dateA = new Date(timeStampA);
let dateB = new Date(timeStampB);
return (dateA.setHours(0, 0, 0, 0) == dateB.setHours(0, 0, 0, 0));
}
从数组中删除某个值,并返回结果数组,不影响原数组
function(arr , val){
let _arr = [];
arr.forEach(_val => {
if (_val !== val) {
_arr.push(_val)
}
});
return _arr;
}
数组去重
function(targetArr){
var resultArr = [];
var _indexArr = [];
var l = targetArr.length;
for (var i = 0; i < l; i++) {
for (var j = i + 1; j < l; j++) {
if (targetArr[i] === targetArr[j]) {
i++;
j = i;
}
}
resultArr.push(targetArr[i]);
_indexArr.push(i);
}
return resultArr;
}
获取随机整数
function(startNum,EndNum){
var num = Math.round(Math.random() * (EndNum - startNum) + startNum).toString();
return Number(parseInt(num));
}
防止频繁触发某个事件函数
function(obj,handler,times,...params){
if (handler._clickTime && new Date().getTime() - handler._clickTime < times * 1000) {
return;
}
handler._clickTime = new Date().getTime();
handler.call(obj, ...params);
}
根据16进制色彩 得到rgb值
function(hexColor) {
const hex = hexColor.replace(/^#?/, "0x");
const c = parseInt(hex);
const r = c >> 16;
const g = (65280 & c) >> 8;
const b = 255 & c;
return [r, g, b];
}
二分法查找递增表中最接近的数
/**
* @return 数组下标 成功 -1 失败
* @pstArray 数组
* @ullTime 目标
* @tag 目标对比元素
*/
function(pstArray, ullTime, tag) {
var index = 0; // 保存最接近数值在数组中的索引
var d_value = Number.MAX_VALUE; // 保存差值绝对值,默认为最大数值
for (var i = 0; i < pstArray.length; i++) {
var new_d_value = Math.abs(pstArray[i][tag] - ullTime[tag]); // 新差值
if (new_d_value <= d_value) { // 如果新差值绝对值小于等于旧差值绝对值,保存新差值绝对值和索引
if (new_d_value === d_value && pstArray[i][tag] < pstArray[index][tag]) { // 如果数组中两个数值跟目标数值差值一样,取大
continue;
}
index = i;
d_value = new_d_value;
}
}
return index // 返回最接近的数值
}
持续更新中……