算法
归并
var arr = [4,2,3,2,3,5,1,0,7,6];
Array.prototype.mergeSortRec = function(){
if (this.length === 1) return this;
var mid = parseInt(this.length / 2, 10),
left = this.slice(0, mid),
right = this.slice(mid);
return this.merge(left.mergeSortRec(), right.mergeSortRec());
}
Array.prototype.merge = function(left, right){
var il = 0,
ir = 0,
result = [];
while(il < left.length && ir < right.length){
if(left[il] < right[ir]){
result.push(left[il++]);
}else{
result.push(right[ir++]);
}
}
while(il < left.length){
result.push(left[il++]);
}
while(ir < right.length){
result.push(right[ir++]);
}
return result;
}
实现栈
class Stack {
private items: any[] = [];
push(...elements: any[]) {
this.items = this.items.concat(elements)
}
pop() {
return this.items.pop();
}
peek() {
return this.items.length;
}
isEmpty(): boolean {
return this.items.length === 0;
}
clear() {
this.items = [];
}
size(): number {
return this.items.length;
}
print(): string {
return this.items.toString();
}
}
正则
舍去两位小数之后:'2123.23123123'.replace(/(\d*\.\d{2})(\d*)/, '$1')
时分秒:/((^[0|1]\d)|(^2[0-3])):[0-5]\d:[0-5]\d$/
DOM 扩展
选择符
- 查询单个元素:
document.querySelector() - 查询元素集合:
document.querySelector()
元素遍历
childElementCount:子元素个数fisrtElementChild:第一个元素子节点lastElementChild:最后一个子节点previousElementSibling:前一个同辈元素nextELementSibling:后一个同辈元素
类名操作
element.classList返回数组,是该节点的类名
add(value):添加一个类名contains(value):检测类名是否存在remove(value):删除一个类名toggle(value):toggle 一个类名
自定义数据属性
data-xxx在 dom 节点存放数据,使用element.dataset获取存放在dom上的数据
插入节点
innerHTML:将节点所有子节点赋值outerHTML:将节点包括自身赋值innerText:只设置文本节点内容outerText:将所有子节点设置成文本内容-
insertAdjacentHTML:通过传入位置参数决定插入节点位置element.insertAdjacentHTML(‘beforebegin’, ‘content’); // 前一个同辈元素插入 element.insertAdjacentHTML(‘afterend’, ‘content’); // 后一个同辈元素插入 element.insertAdjacentHTML(‘afterbegin’, ‘content’); // 第一个子元素插入 element.insertAdjacentHTML(‘beforeend’, ‘content’); // 最后一个子元素插入
让节点出现到视窗
element.scrollIntoView():将内容滚动到视窗内element.scrollIntoViewIfNeeded():如果需要滚动的节点在视窗内,则不做操作,如果滚动节点不在视窗内,则滚动到视窗内element.scrollByLines():滚动制定的行高element.scrollByPages():滚动制定的页面高度
子节点获取与检测
children:返回所有的子节点childNodes:返回所有的子节点contains:检测是否包含某个子节点