前端两三问(20190923)
1、js如何获取数组的key
function getObjectKeys(object){
var keys = [];
for (var property in object)
return property;
}
console.log(getObjectKeys(3332:[])) // 3332
2、如何过滤数组中的空数据
Array.prototype.notempty = function() {
var arr = [];
this.map(function(val, index) {
if (val !== "" && val != undefined) {
arr.push(val);
}
});
return arr;
}
this.selectHouse = this.selectHouse.notempty()
3、iview checkboxGroup 动态删除某个值后,页面checkBox 选中状态错乱。
具体情况如下:
需求 :
checkboxGroup v-for生成三个checkbox,默认勾选。当我点击某个checkbox默认取消勾选并且删除该checkbox。
操作方法一:
从最后一个开始删,也就是删除默认绑定的model数组中的最后一个值,这时候剩余checkbox的选中状态是正常的。
操作方法二:
但是如果从中间开始删,比如删除第二,那么第二个checkbox会被删除,但是第三个checkbox的选中状态样式没有了,model数据还是在的。
解决方法一:
我们在删除 model数据后,更新数据的时候用this.$nextTick进行数据更新
解决办法二:
v-for 的时候key的取值不取 index 而取实际的value值
延伸:
v-for在更新已渲染的元素列表的时候,采用 就地复用 策略,如果列表的数据发生变化,那么它会根据key值取判断值是否修改,如果修改则重新渲染这一项,否则则复用之前的数据。但是如果我们用 index 下标来作为 key,那么在上面的例子中,我们删除了第二个数据,数据由三条变成了两条,列表重新渲染,而原本第三个checkbox的key是2,由于model 数据长度由3变成了2。第三个checkbox的key由 2 变成了1 导致重新赋值渲染。所以就导致实际值存在,但选中状态缺消失了的问题。