近期JS心得
child和tags都是[{id:1,value:'a'}]的格式,当点击一级标签,要看二级标签是否已经被选中,如果被选中,则清除出去 如果用for循环 再splice的话 当删除掉了一个元素后,数组的索引发生的变化,造成了程序的异常
所以要用while的方式
const arr = child.childList.map(item => item.id)
let i = this.tags.length
while (i--) {
if (arr.includes(this.tags[i].id)) {
this.tags.splice(i, 1)
}
}
上面的数组对象[{id:1,value:'a'}] 根据id去重
const id = 'id'
this.tags = this.tags.reduce((all, next) => all.some((atom) => atom[id] == next[id]) ? all : [...all, next], [])
数组去重 [1,2,3,4,2,3] 先转成没有重复的set 再转成数组
this.openLabels = Array.from(new Set(this.openLabels))
某个对象的数据渲染了dom,这时要在js里给这个对象添加一个它没有的属性,如果直接用点 elem.haveChecked = 1 这时因为这个属性不是本来就有的 vue没有给他生成getter setter 方法 所以dom的更新会没有或者慢了一秒半秒的,要用全局注册的方式:this.$set(elem, 'haveChecked', 1)
有时一个dom被删除 再被添上时 用this.$refs.stripOuter的方式 取高度 不能正常的取值 用this.$nextTick 也不行 这时 要用document.getElementsByClassName('checkHeader')[0]的方式
const headerHeight = document.getElementsByClassName('checkHeader')[0].clientHeight + 1
const stripHeight0 = document.getElementsByClassName('stripOuter')[0] ? document.getElementsByClassName('stripOuter')[0].clientHeight : 0
const stripHeight1 = document.getElementsByClassName('stripOuter')[1] ? document.getElementsByClassName('stripOuter')[1].clientHeight : 0
this.$refs.searchWrapper.style.maxHeight = headerHeight + stripHeight0 + stripHeight1 + 7 + 'px'
多层级的数组对象 的深拷贝方法。如果用[...arr] 的方式 只能深拷贝一层,再深的层 是浅拷贝,同理 Object.assign(target, source1, source2)也是,深拷贝可以用下面的方式:
this.quotaDataChange = [].concat(JSON.parse(JSON.stringify(this.quotaData)))
取父级页面或者兄弟页面的某个值可以用:
this.$parent this.$children
近期JS心得的更多相关文章
- 比較Backbone.js, Angular.js, Ember.js, Knockout.js 心得
還記得第一次寫網站的時候,我無意間寫成了 SPA(single page application),當時還沒有SPA這個詞,後來因為廣告主需要不同 url location 頁面的廣告展示,只好把部分 ...
- JS 心得总结
1.浏览器关闭事件监听(http://pengjianbo1.iteye.com/blog/507569,http://bbs.csdn.net/topics/360152711) <!DOCT ...
- 分享一下学习css,js心得
简化代码,使页面简洁! web前端开发——将界面更好呈现给用户! 要了解在不同浏览器上的兼容情况.渲染原理和存在的bug! 网站性能优化.SEO: 代码的可维护性.性能: 网站重构的本质:建立一个前端 ...
- 初次使用引用外部js心得
在外部引用自己编辑的js时建立链接写在头部中是会出错的,如下图 错误如下: 这是一个是我初学时遇到的一个算是低级错误吧,看到这个错误,我以为的是我引用的js中编辑的代码是不是哪里写错了,但是看了好多遍 ...
- 普通页面使用vue.js心得
在写本文之前要问自己几个问题,来说明为什么要这么做: 为什么在html中使用vue.js? vue.js已经趋于成熟,个人感觉比jquery要好用的多,但是在node环境下使用vue.js不用使用SS ...
- 今日js心得
<input type="hidden" id="history_chart_json" data-json="#{smartDeviceMon ...
- JS心得——判断一个对象是否为空
判断一个对象是否为空对象,本文给出三种判断方法: 最常见的思路,for...in...遍历属性,为真则为"非空数组":否则为"空数组" 2.通过JSON自带的. ...
- 近期js
1 var value1 = 0, value2 = 0, value3 = 0; for ( var i = 1; i <= 3; i++) { var i2 = i; (function() ...
- es6,es7,es8
概述 ES全称ECMAScript,ECMAScript是ECMA制定的标准化脚本语言.目前JavaScript使用的ECMAScript版本为ECMAScript-262. ECMAScript 标 ...
随机推荐
- UOJ#7 NOI2014 购票 点分治+凸包二分 斜率优化DP
[NOI2014]购票 链接:http://uoj.ac/problem/7 因为太麻烦了,而且暴露了我很多学习不扎实的问题,所以记录一下具体做法. 主要算法:点分治+凸包优化斜率DP. 因为$q_i ...
- Ubuntu18.04偏好设置
以下只是我个人的一些偏好设置,会持续更新 一.安装中文输入法和换用中文界面 Ubuntu18.04下安装搜狗输入法 Ubuntu18.04如何从英文界面更改为中文界面 二.更改系统自带设置 1.设置- ...
- nginx 的反向代理及缓存功能
上游服务器的设置 server { #监听的IP及端口 listen 127.0.0.1:8080; #虚拟主机对硬解析的主机名 #server_name localhost; #charset ko ...
- python_90_hashlib模块
#用于加密相关的操作,3.x里代替了2.x中的md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 import hashlib ...
- 传输途径 ath9k层到硬件层
这里只写了ath9k层到虚拟硬件层的一些东西,mac层的没有整理. 传输途径主要从ath9k_tx() --->ath_tx_start() --->ath_tx_send_normal( ...
- Node.js 中文学习资料和教程导航
这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...
- FTPClient:enterLocalPassiveMode()方法简单说明
问题:在Java程序中,使用FTPClient下载FTP文件的时候,可以下载到FTP服务器上的文件夹,但是里面的文件没有下载到本地. 分析:这个涉及到FTP在使用的过程中,客户端和服务端连接过程中,端 ...
- ll1文法
<program>-><external_declaration> | <program> <external_declaration> < ...
- JSON.stringify(value[, replacer[, space]])
1. JSON.stringify(value[, replacer[, space]]);value 必需 对象或数组,需要转换成json字符串的数据replacer 可选 函数或数组space 可 ...
- 《effective c++》问题总结
04 确定对象被使用前已先被初始化 1.static/heap/stack对象 2.trivial对象 3.模板隐式具现化 implicit template instantiations 4.Sin ...