在写按照指定条件去查询的时候,可能调用接口的时候某些参数是可选的,换句话说就是该属性该条件为空的时候直接不将该参数传过去,此时可以有两种方法
1.写几个条件判断,举出什么条件下传递的参数是什么样子
if (this.username === '') {
this.$http.get('url', params1).then()
} else {
this.$http.get('url', params2).then()
}
该写法可以是可以,但是如果查询条件很多的情况下可能要写很多判断,上面的例子只写了一个判断
username为空的情况,若是还有别的属性判断是否为空,会显得相当繁杂
2.可以写一个通用方法,使用delete方法
for (const item in data) {
if (data[item] === '') {
delete data[item]
}
}
对比以上方法的话可以省去大量条件判断,delete方法可以直接帮你实现删除你指定条件的的对象
或者数组里面的属性或者值,更加便捷
delete和splice方法的对比
1.delete方法删除的数组指定下标的值,但是只是让该值变为undefined而splice则是直接删除
eg:var arr1 = [ 5 , 4 , 3 , 2 , 1 , 9 ]
console.log ( delete arr1[ 1 ] ) ===> true
console.log(arr1) ===> [5,undefined,3,2,1,9]
console.log ( arr1.splice ( 0 , 1 ) ) ===> [5]
console.log(arr1) ===> [4,3,2,1,9]
2.delete是直接删除,而splice则可以实现增加,不仅仅是只能删除
3.delete用来删除js对象的属性,不能删除任何变量(全局、局部、原型链中的变量)
eg:
obj = {a:1,b:2,c:3}
delete obj.a
console.log(obj) //Object {b: 2, c: 3}
name = 'lily';
delete name;
console.log(name); //lily
var name = 'lily';
delete name;
console.log(name); //lily
function fun(){
this.name = 'mm';
}
var obj = new fun();
fun.prototype.age = 18;
deleteobj.age;
console.log(obj.age) //18