1、splice和delete都是删除数组中的元素,splice删除后改变了原数组,delete不改变原数组,删除的元素位置变成undefined。
var arr = new Array(1, 2, 3, 4, 5); //初始化数组
如果想删除上面数组中的2,那么应该
arr.splice( 删除元素的index, 从index开始删除数字的个数);
但是如果用到for循环里面就出现问题了,splice删除2之后数组中的3显示在了原来2的位置,那么循环中用splice要注意改变下标
for(let i in arr){
if(arr[i] == number){ //number代表被删除的数字
arr.splice( i, 1 ); //从i位置开始删除1个数字
break;
}
}
还存在另一种问题就是如果数组是
var arr = new Array(1, 2, 2, 4, 5);
如果数组中有重复的需要改变循环次数
let num = 1;//要删除的个数
for(var i=0; i < arr.length; i++){
if(arr[i] === number){ //number代表被删除的数字
arr.splice( i, 1); //从i位置开始删除1个数字
i = i-1; //改变下标
arr.length = arr.length - 1;
}
}
2、findIndex
(1)、当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
(2)、如果没有符合条件的元素返回 -1
另外findIndex不会执行空数组,也不会改变数组
3、在Vue项目中使用this.$forceUpdate();进行强制渲染,可以解决页面v-for中修改item属性值后页面v-if不改变的问题,因为数据层次太多,render函数没有自动更新,需手动强制刷新。