目前有记录过的一些功能代码库,以后会不断更新
纯JS中文数组按首字母排序
pySegSort(arr,empty) {
if(!String.prototype.localeCompare){
return null;
}
var letters = "*abcdefghjklmnopqrstwxyz".split('');
var zh = "阿八嚓哒妸发旮哈讥咔垃痳拏噢妑七呥扨它穵夕丫帀".split('');
var segs = [];
var curr;
for(let i in letters){
curr = {letter: letters[i].toUpperCase(), data:[]};
for(let j in arr){
let jx = new String(arr[j])
if((!zh[i-1] || zh[i-1].localeCompare(jx,"zh") <= 0) && jx.localeCompare(zh[i],"zh") == -1) {
curr.data.push(jx.replace(/"/g,""));
}
}
if(empty || curr.data.length) {
segs.push(curr);
curr.data.sort(function(a,b){
return a.localeCompare(b,"zh");
});
}
}
return segs;
}
js 带动画的置顶滚动
生硬版:
var scrollToTop = window.setInterval(function() {
var pos = document.documentElement.scrollTop || document.body.scrollTop || window.pageYOffset;
if ( pos > 0 ) {
window.scrollTo( 0, pos - 20 ); // 每fps移动距离
} else {
window.clearInterval( scrollToTop );
}
}, 16); // 大约60fps
流畅版:
(function smoothscroll(){
var currentScroll = document.documentElement.scrollTop || document.body.scrollTop || window.pageYOffset;
if (currentScroll > 0) {
window.requestAnimationFrame(smoothscroll);
window.scrollTo (0,currentScroll - (currentScroll/5));
}
})();
大数相加
function addBigInt(x, y) {
x = x + '';
y = y + '';
let big, small;
if (x.length > y.length) {
big = x;
small = y;
} else {
big = y;
small = x;
}
let resultArr = [];
let flag = 0;
let pos = 0;
while (true) {
let newVal;
let biglen = big.length-1 - pos;
let smalllen = small.length-1 - pos;
pos++;
if (smalllen >= 0) {
newVal = 1 * big[biglen] + 1 * small[smalllen] + flag;
} else if (flag) {
newVal = 1 * big[biglen] + flag;
} else {
newVal = -1;
}
if (newVal > 10) {
resultArr.unshift(newVal - 10);
flag = 1;
} else if (newVal > 0) {
resultArr.unshift(newVal);
flag = 0;
} else {
resultArr.unshift(big.slice(0, biglen+1));
break;
}
}
return resultArr.join('');
}
取消已选中的选区
window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty()
生成随机像素测试图
const canvas = document.createElement("canvas");
const w = 4096;
const h = 3112;
// 绘制随机颜色像素
canvas.setAttribute("width", w);
canvas.setAttribute("height", h);
document.body.innerHTML = "";
document.body.appendChild(canvas);
const ct = canvas.getContext("2d");
const dropContent = ct.getImageData(0, 0, w, h)
for (i = 0; i < h; i++) {
for (j = 0; j < w; j++) {
const s = (i * w + j) * 4;
dropContent.data[s] = Math.floor(Math.random() * 256);
dropContent.data[s + 1] = Math.floor(Math.random() * 256);
dropContent.data[s + 2] = Math.floor(Math.random() * 256);
dropContent.data[s + 3] = 255;
}
}
ct.putImageData(dropContent, 0, 0);
// canvas转base64
const dataurl = canvas.toDataURL('image/jpeg');
// base64转file
const arr = dataurl.split(',');
const mime = arr[0]?.match(/:(.*?);/)[1];
const bstr = atob(arr[1]);
let n = bstr.length;
const u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
const file = new File([u8arr], 'temp', { type: mime });
// 下载file文件
const a = document.createElement("a");
const url = URL.createObjectURL(file);
a.href = url;
a.download = 'test.jpeg';
document.body.appendChild(a);
a.click();
// window.open(canvas.toDataURL('image/jpeg'));