for (let i = 0; i < arr.length - 1; i++) {
let item = arr[i]
for (let j = i + 1; j < arr.length; j++){
if(item === arr[j]){
// 用最后一项替代当前项
arr[i] = arr[arr.length - 1]
// 最后一项删掉
arr.length--
// 下一轮还和这一项比
j--
}
}
}
缺点
let obj = {}
for (let i = 0; i < arr.length; i++) {
// 把每一次循环得到的当前项,作为对象的属性名和属性值存储进去
let item = arr[i]
if(obj[item] !== undefined){
// 证明对象中有这个属性
arr[i] = arr[arr.length - 1]
arr.length--
i--
continue
}
obj[item] = item
}
优点
缺点
let newAry = []
for (let i = 0; i < arr.length; i++) {
let item = arr[i]
if(newAry.indexOf(item) == -1){
newAry.push(item)
}
}
缺点
(proto =>{
function formatTime(template = '{0}年{1}月{2}日 {3}时{4}分{5}秒') {
let arr = this.match(/\d+/g)
return template.replace(/\{(\d+)\}/g, (_, n) => {
let item = arr[n] || '0'
item.length < 2 ? item = '0' + item : null
return item
})
}
proto.formatTime = formatTime
})(String.prototype)
let time = '2020-1-1 11:11:11'
time.formatTime() // 2020年01月01日 11时11分11秒
time.formatTime('{1}-{2} {3}:{4}') // 01-01 11:11
time.formatTime('{0}年{1}月{2}日') // 2020年01月01日
类型 | nodeType | nodeName | nodeValue |
---|---|---|---|
文档节点 | 9 | #document | null |
元素节点 | 1 | 大写标签名 | null |
文本节点 | 3 | #text | 文本内容 |
注释节点 | 8 | #comment | 注释内容 |
获取:[元素].xxx
删除:delete [元素].xxx
原理:操作堆内存
获取:[元素].getAttribute(‘xxx’)
删除:[元素].removeAttribute(‘xxx’)
原理:操作DOM结构
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。