前端两三问(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 导致重新赋值渲染。所以就导致实际值存在,但选中状态缺消失了的问题。