js删除数组指定下标的元素
现在遇到一个需求要删掉下标为index的元素,下面介绍两种方法: 一、splice:删除后,后面的元素自动填补到前面 arr.splice(index, 1) 举例:现在有数组 arr=['a',’b',’c',’d'] arr.splice(1, 1); //结果arr=['a',’c',’d'](下标1开始,删除1个) 注意: 上面的代码中,我们要注意,如果想修改 arr 的值,直接这样操作 arr 直接就变了,而不要写作 arr= arr.splice(1,1),因为 splice() 方法的返回值为删除掉的元素。 补充: spice增加: arr.splice(1,0,’str'); //结果arr=['a',’str',’b',’c',’d'] spice替换: arr.splice(1,1,’str'); //结果arr=['a',’str',’c',’d'] spice替换2: arr.splice(1,2,’str'); //结果arr=['a',’str',’d'](就是说:下标1开始2个换成1个“str”) spice删除多个: arr.splice(1,2); //结果arr=['a',’d'] 二、delete:删除后,该下标位置元素为undefined deletearr[index];//结果arr=['a',undefined,’c',’d'] from:https://www.cnblogs.com/belongs-to-qinghua/p/12393296.html
View Detailsvue 强制刷新组件重新渲染
实现功能:使用富文本编辑器编写文章,然后把编写成功的文章用子组件显示。 问题描述:父组件给子组件传递数据,子组件第一次调用数据的时候页面渲染是正常的,当数据变化的时候,子组件的页面渲染就失效了。 问题判断:通过一次次测试发现,第一次打开子组件的时候页面的渲染是正常的,后面打开之后渲染就失效了。所以初步怀疑是第二次调用组件的时候没有对数据进行渲染。 解决方案一: 当数据变更后,通过watch 监听,先去销毁当前的组件,然后再重现渲染。使用 v-if 可以解决这个问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<template> <third-comp v-if="reFresh"/> </template> <script> export default{ data(){ return { reFresh:true, menuTree:[] } }, watch:{ menuTree(){ this.reFresh= false this.$nextTick(()=>{ this.reFresh = true }) } } } </script> |
解决方案二: 通过vue key 实现,原理官方文档。所以当key 值变更时,会自动的重新渲染。(推荐)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<template> <third-comp :message="menuData" :key="menuKey"/> </template> <script> export default{ data(){ return { menuKey:1, menuData: "", } }, watch:{ menuData(){ ++this.menuKey } } } </script> |
from:https://www.cnblogs.com/zyulike/p/12036456.html
View DetailsJS中find(), findIndex(), filter(), forEach(), some(), every(), map()方法
1. find()与findIndex() find()方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。 [1, 2, 5, -1, 9].find((n) => n < 0) //找出数组中第一个小于 0 的成员 // -1 find()方法的回调函数可以接受三个参数,依次为当前的值、当前的位置和原数组。 findIndex()方法的用法与find()方法非常类似,返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1。 [1, 2, 5, -1, 9].findIndex((n) => n < 0) //返回符合条件的值的位置(索引) // 3 2. filter() filter()方法使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组。 filter 为数组中的每个元素调用一次 callback 函数,并利用所有使得 callback 返回 true 或 等价于 true 的值 的元素创建一个新数组。那些没有通过 callback 测试的元素会被跳过,不会被包含在新数组中。filter 不会改变原数组。 var arr = [10, 20, 30, 40, 50] var newArr = arr.filter(item => item > 30); console.log(newArr); //[40, 50] //数组去重 var arr = [1, 2, 2, 3, 4, 5, 5, 6, 7, 7, 8, 8, 0, 8, 6, 3, […]
View DetailsJS数组转字符串(3种方法)
数组与字符串相互转换方法
toString() 将数组转换成一个字符串
toLocalString() 把数组转换成本地约定的字符串
join() 将数组元素连接起来以构建一个字符串
element table 批量获取选择的行的数据(selection 勾选框)
批量选择table 的行数 代码实现: 在<el-table >添加属性 ref = "multipleTable " , 在<el-table-colum> 添加type属性 type=" selection "
1 |
再通过一下代码就能获取已选择的行的数据;
1 |
this.$refs.multipleTable.selection |
这里的 multipleTable 是上面ref 的值; from:https://blog.csdn.net/weixin_42517975/article/details/89631128
View Detailselement-ui table 怎么保持选择状态
1.设置row-key
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<el-table :border="true" :highlight-current-row="true" v-loading="loading" element-loading-text="数据加载中..." element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.8)" ref="multipleTable" :data="partList" :row-key="getRowKey" tooltip-effect="dark" style="width: 100%" @select-all="handleSelectionAll" @selection-change="handleSelectionChange"> getRowKey (row) { return row.code }, |
2.设置选择行状态 :reserve-selection=“true”
1 |
<el-table-column align="center" :reserve-selection="true" type="selection" width="55"></el-table-column> |
from:https://blog.csdn.net/weixin_43153741/article/details/104842331
View Detailsjs连接两个或多个数组的方法
obj.concat(arrayx,arrayy); ver a = [1,2,3]; var b = [4,5]; a.concat(b);//1,2,3,4,5
View Detailsjs判断一个数组是否包含一个指定的值
今天看了一下 有好几种方法 总结一下 1:array.indexOf 此方法判断数组中是否存在某个值,如果存在返回数组元素的下标,否则返回-1
1 2 3 |
let arr = ['something', 'anything', 'nothing', 'anything']; let index = arr.indexOf('nothing'); console.log(index) //结果是2 |
2. array.includes(searchElement[, fromIndex]) 此方法判断数组中是否存在某个值,如果存在返回 true,否则返回false。
1 2 3 4 5 6 7 8 9 10 11 12 |
function test(fruit) { const redFruits = ['apple', 'strawberry', 'cherry', 'cranberries']; if (redFruits.includes(fruit)) { console.log('red'); }else{ console.log('blue'); } } test('aple')//结果是red |
3. array.find(callback[, thisArg]) 返回数组中满足条件的第一个元素的值,如果没有,返回undefined
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// ---------- 元素是普通字面值 ---------- let numbers = [12, 5, 8, 130, 44]; let result = numbers.find(item => { return item > 8; }); console.log(result) # 结果: 12 // ---------- 元素是对象 ---------- let items = [ {id: 1, name: 'something'}, {id: 2, name: 'anything'}, {id: 3, name: 'nothing'}, {id: 4, name: 'anything'} ]; let item = items.find(item => { return item.id == 3; }); console.log(item) # 结果: Object { id: 3, name: "nothing" } |
4. array.findIndex(callback[, thisArg]) 返回数组中满足条件的第一个元素的索引(下标), 如果没有找到,返回-1 同第3种方法类似 from:https://www.cnblogs.com/hepengqiang/p/9822118.html
View DetailsCSGO国服变成红色血液方法(反和谐)
1. 我的电脑D:\Program Files (x86)\Steam\steamapps\common\Counter-Strike Global Offensive\csgo 里面的三个文件 pakxv_perfectworld_000 pakxv_perfectworld_001 pakxv_perfectworld_dir 剪切 2.新建一个叫bak文件夹 3.把这三个文件剪切复制进这个bak文件夹就OK了,进游戏就不冒石油了是红色血液
View DetailsIE浏览器error:Promise未定义
原因: 使用axios会报错,因为axios本质上是封装了ES6语法的promise,而promise在ie上并不兼容。 解决办法: 引入babel-polyfill,babel-polyfill相当于一个ES6的兼容垫片,会让浏览器读懂 1、终端输入命令:npm install --save babel-polyfill (安装了淘宝镜像的话可以用 cnpm install --save babel-polyfill) 2、在main.js文件的顶部引入 import "babel-polyfill" 3、在build目录下webpack.config.js文件设置入口改为如下 (如果你的项目用的是脚手架,在在build目录下webpack.base.config.js文件更改入口)
1 2 3 4 5 |
model.exports={ entry:{ app;["babel-polyfill",'./src/main.js'] } } |
作者:听风_ead5 链接:https://www.jianshu.com/p/e7c6a30cfb13 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
View Details