记录一些常用的正则到博客中。
1 | // 判断是否含有特殊符号 |
记录一些常用的正则到博客中。
1 | // 判断是否含有特殊符号 |
冒泡排序的思路:遍历数组,然后将最大数沉到最底部;
时间复杂度:O(N^2);
空间复杂度:O(1)
作为最简单的排序算法之一,冒泡排序的思想是,从左到右依次比较两个存储数据的大小,如果第一个数大于第二个数,就交换两个数据,这样一轮比较之后,最大的数会放在后面,这样,每次循环比较,本轮中的最大值都会排到最后,直到循环结束,实现数组升序。
动图演示如下:
String.prototype.localeCompare()
引自MDN:localeCompare()
方法返回一个数字来指示一个参考字符串是否在排序顺序前面或之后或与给定字符串相同。
语法1
2// referenceStr:引用字符串 compareString:比较字符串
referenceStr.localeCompare(compareString[, locales[, options]])
描述
返回一个数字表示是否 引用字符串 在排序中位于 比较字符串 的前面,后面,或者二者相同。
切勿依赖于 -1 或 1 这样特定的返回值。不同浏览器之间(以及不同浏览器版本之间) 返回的正负数的值各有不同,因为W3C规范中只要求返回值是正值和负值,而没有规定具体的值。一些浏览器可能返回-2或2或其他一些负的、正的值。
示例
使用 sort()
、localeCompare()
进行中文数组首字母的排序1
2
3
4
5function compare(a, b) {
return a.localeCompare(b);
}
resultArr = [ '学习' , '钢材' , '蛋汤' , '房企', '安卓','北京', '藏宝' ] ;
resultArr.sort(compare); // ["安卓", "北京", "藏宝", "蛋汤", "房企", "钢材", "学习"]
HTMLElement.offsetWidth
引自MDN:是一个只读属性,返回一个元素的布局宽度。一个典型的(译者注:各浏览器的offsetWidth可能有所不同)offsetWidth是测量包含元素的边框(border)、水平线上的内边距(padding)、竖直方向滚动条(scrollbar)(如果存在的话)、以及CSS设置的宽度(width)的值。
语法1
2// 返回元素的宽度(包括元素宽度、内边距和边框,不包括外边距)
var offsetWidth = element.offsetWidth;
这个属性将会 round(四舍五入)为一个整数。如果你想要一个fractional(小数)值,请使用
element.getBoundingClientRect()
我们先创建一个简单的构造函数:1
2
3
4
5
6function Rocker(name){
this.name = name;
};
Rocker.prototype.getName = function(){
return this.name;
}
这是最简单不过的构造函数了,正常情况下,我们要生成他的一个实例,只需要:1
var someOne = new Rocker('Max')
这样就实例化了一个对象,但是,实例化的过程是怎样的呢?
可能很多朋友在网上也看了很多文章,new的过程不就是三步吗?
Or
没错,是这三步,但是你真的理解了吗?至少我第一次看挺懵逼的。好吧,最直观的方法就是,把创建一个对象的过程用代码体现出来,这样才能装逼嘛…
体验:让我们创建一个函数,来实现上面new操作符的功能:
1 | var createObject = function(){ |
就是上面这几句代码,向你展现了一个实例被new出来的过程。
我们来简单分析一下吧,其实很清晰明了了。
在(1)处,我们创建了一个空对象(准确的说是克隆了Object.prototype对象)
接下来(2)取到构造函数,赋值给Constructor变量,也就是说Rocker构造函数变成Constructor的一个引用了
接着(3)把Constructor.prototype(也就是Rocker.prototype)赋值给(1)刚刚创建的obj的原型链,或者这么说,把obj的原型链指向Constructor的原型
(4)我们用apply改变this的指向,用obj代替Constructor构造函数内部的this,并把arguments作为参数传入(在第2步时已经用shift把第一个参数去除了),此时的ret已经是一个合格的实例了!
保险起见,我们(5)返回时判断ret是否是对象,如果不是就返回一个空对象(因为很多人真的不会按照规矩传参!!!)
这时候我们再外部调用这个函数试试,实时证明确实能达到new的效果。
再用getPrototypeOf方法测试一下,Freak的原型链真的指向Rocker的原型!
这就是实例被new出来的过程,你明了吗?
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
1 | 给定 nums = [2, 7, 11, 15], target = 9 |
1 | /** |
1 | /** |
1 | function deep(arr, count = 0, ttt = []) { |
1 | const fuck = [{"label": "占用道路问题", "value": 31, "children": [{"label": "经营占道", "value": 35, "children": [{"label": "店外经营占道", "value": 40, "children": null }, {"label": "流动摊贩占道", "value": 41, "children": null } ] }, {"label": "垃圾占道", "value": 36, "children": [{"label": "生活垃圾", "value": 42, "children": null }, {"label": "建筑垃圾", "value": 43, "children": null }, {"label": "工业垃圾", "value": 44, "children": null } ] }, {"label": "车辆占道", "value": 37, "children": [{"label": "机动车占道", "value": 45, "children": null }, {"label": "非机动车占道", "value": 46, "children": null } ] }, {"label": "霸占车位", "value": 38, "children": [] }, {"label": "其他占道", "value": 39, "children": [] } ]}, {"label": "“两违”问题", "value": 32, "children": [{"label": "违法建筑", "value": 58, "children": [{"label": "房屋违建", "value": 61, "children": null }, {"label": "小区违建", "value": 62, "children": null }, {"label": "违建棚架", "value": 63, "children": null } ] }, {"label": "违法用地", "value": 59, "children": [] }, {"label": "其他违建", "value": 60, "children": [] } ] }, {"label": "市容设施管理问题", "value": 33, "children": [{"label": "道路损坏", "value": 47, "children": [] }, {"label": "垃圾桶损坏", "value": 48, "children": [] }, {"label": "下水道堵塞", "value": 49, "children": [] }, {"label": "井盖损坏", "value": 50, "children": [] }, {"label": "路灯损坏", "value": 51, "children": [] }, {"label": "树木修剪", "value": 52, "children": [] }, {"label": "水电气", "value": 53, "children": [] }, {"label": "户外广告牌", "value": 54, "children": [] }, {"label": "隔音屏损坏", "value": 55, "children": [] }, {"label": "洒水车问题", "value": 56, "children": [] }, {"label": "其他", "value": 57, "children": [] } ] }, {"label": "其他问题", "value": 34, "children": [] } ] |
1 | /*核心代码*/ |
Sequelize 中 Model 的数据类型对应MySQL中的数据类型
1 | Sequelize.STRING // VARCHAR(255) 类型:字符串 最大值: 65535个字符 |