某些场景下,需要在前端实现将数组中的数据按照多个字段进行排序,Array实例内置的sort方法只能实现按照单个字段的排序。
多字段同时排序在后端很好实现,直接order by field1 asc, field2 asc, field3 desc…
在js中可以通过扩展sort方法来实现多个字段的同时排序:
const items = [
{ name: 'linc', age: 28, num: 1234 },
{ name: 'linc', age: 28, num: 12345 },
{ name: 'kiki', age: 20, num...
1、转换为字面量的联合类型
1.1、数字枚举
enum Test1 {
red,
green,
yellow,
}
type KeyTest1 = keyof typeof Test1 // "red" | "green" | "yellow"
type ValTest1 = `${Test1}` // "0" | "1" | "2"
type StrToNum<Str> = Str extends `${infer Num extends number}` ? Num : Str
type NumValTest1 = StrToN...
首先,将自定义的监听xhr事件的方法override原本的XMLHttpRequest(from:分享JavaScript监听全部Ajax请求事件的方法)
(function () {
if (typeof window.CustomEvent === "function") return false;
function CustomEvent(event, params) {
params = params || {
bubbles: false,
cancelable: false,
detail: undefined
};
var ...
1、canvas转换为dataURL (从canvas获取dataURL)
var dataurl = canvas.toDataURL('image/png');
var dataurl2 = canvas.toDataURL('image/jpeg', 0.8);
2、File对象转换为dataURL、Blob对象转换为dataURL
File对象也是一个Blob对象,二者的处理相同。
function readBlobAsDataURL(blob, callback) {
var a = new FileReader();
a.onload = ...
与android交互
android端将方法挂载到webview上,js直接调用即可,如:android.forWeb(params)
与ios交互
js调用ios提供的方法:window.webkit.messageHandlers.方法名.postMessage(参数)
注意:“参数”允许类型为NSNumber, NSString, NSDate, NSArray, NSDictionary, and NSNull,如果不需要传参,那么“参数”也要写作null,否则有坑。
提供给android或ios的webview...
1、零宽断言
无论是零宽还是断言,听起来都古古怪怪的,那先解释一下这两个词。
断言:俗话的断言就是“我断定什么什么”,而正则中的断言,就是说正则可以指明在指定的内容的前面或后面会出现满足指定规则的内容,
意思正则也可以像人类那样断定什么什么,比如"ss1aa2bb3",正则可以用断言找出aa2前面有bb3,也可以找出aa2后面有ss1.
零宽:就是没有宽度,在正则中,断言只是匹配位置,不占字符,也就是说,匹配结果里是不会返回断言本身。
意思是讲明白了,那他有什么用呢?我们来举个栗子:
假设我们要用爬虫抓取csdn里的文章阅读量。通过查看...
正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。
但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给你修,在你学会正则之前,你只能看着那些正则大师们,写了一串外星文似的字符串,替代了你用一大篇幅的if else代码来做一些数据校验。
既然喜欢,那就动手学呗,可当你百度出一一堆相关资料时,你发现无一不例外的枯燥至极,难以学习(实话说,当年不理君也是这样的心态)。
下面,不理君尝试用一种比较通俗点的方式讲一下正则,让你能在读完之后,能自己写出一些简单的正则,再不济,...
1、使用iframe
let ifr = document.createElement('iframe');
ifr.src = 'test123://';
ifr.style.display = 'none';
document.body.appendChild(ifr);
this.downloadTimer = setTimeout(()=>{
document.body.removeChild(ifr)
this.clearTimer()
},3000);
2、直接window.location
window.location...
在一些特定情况下,我们只需要让某个函数只执行1次或n次,比如循环或者定时执行等。
1.最简单的一种
var ifRun = true;
var myFunction = function(){
if(ifRun){
console.log("i'm just do once");
ifRun = false;
}
}
myFunction();//i'm just do once
myFunction();//nothing
myFunction();//nothing
2.使用apply()劫持一下再做次数判断
function just...