let a = '';
let b = '1';
let obj = {
data1: a === ''? null:a,
data2: b,
}
上面代码中,能否直接在obj中判断,如果a为空时,不添加data1,请问有相关的语法吗
let a = '';
let b = '1';
let obj = {
data1: a === ''? null:a,
data2: b,
}
上面代码中,能否直接在obj中判断,如果a为空时,不添加data1,请问有相关的语法吗
没有相关的语法,不过你在可在套一层函数实现需求
const removeFlaseValue = (obj) => {
for (const key of Object.keys(obj)) {
if (obj[key] === null || obj[key] === undefined || obj[key] === '') {
delete obj[key];
}
}
return obj;
};
let a = '';
let b = '1';
let obj = removeFalseValue({
data1: a,
data2: b,
})
不明白为什么非要在对象内部判断,不过既然他都这么问了,就玩点花的。。虽然不是时间安全的
let a = '';
let b = '1';
let obj = {
data1:(function(){
if (a === '') {
setTimeout(() => {
delete(obj.data1);
},1);
}
return a;
})(),
data2:b,
}
> obj
< {data2: "1"}
可以试下赋值成undefined,用JSON.parse(JSON.stringify(obj)) 多做一步转换
let a = '';
let b = '1';
let obj = {
data1: a === ''? undefined:a,
data2: b,
}
JSON.parse(JSON.stringify(obj))
没有你想要的语法,只能按常规语法生成对象之后再把属性过滤一遍,
let a = "";
let b = "1";
let obj = {
data1: a === "" ? null : a,
data2: b,
};
obj = Object.fromEntries(
Object.entries(obj)
.filter(([, v]) => v !== null && v !== undefined)
);
console.log(obj);
或者可以用删除 key 的方法去除多余的属性
Object.entries(obj)
.filter(([, v]) => v === null || v === undefined)
.forEach(([key]) => delete obj[key]);
console.log(obj);
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决