我有一个网页,该网页通过ajax调用将信息加载到数据库上。我要拉一个奇异的对象,如果该对象中的特定字段为null或为空,则不会填充页面的该部分。例如,假设我们有一个名为Hamburger的对象,其字段为topBun =“ kaiser”,middle = null和bottomBun =“ kaiser”。我想根据这些结果设置每个字段。
在我的脑海中,我想我必须要做一个if([variable] == null){//将变量设置为page}。我想知道的是,是否有更简单或更完善的方法来做到这一点?
答案 0 :(得分:1)
您可以在Array.prototype.reduce()
上使用Object.keys()
const obj = {a:1, b:2, c:null, d: ''},
result = Object
.keys(obj)
.reduce((r,key) =>
(obj[key] && (r[key]=obj[key]), r),{})
console.log(result)
.as-console-wrapper{min-height:100%;}
答案 1 :(得分:0)
您可以像这样检查:
if(obj && obj.myProp && obj.someOther){
//My code
}
或者您可以考虑使用可选链接:
if(obj?.myProp){
}
请注意,前者将验证所有 fassy 值,而后者仅适用于null
和undefined
答案 2 :(得分:0)
如果对象中有空值,此函数将返回true。
function search(object = { }) {
const values = Object.values(object);
for (let i = 0, l = values.length; i < l; i++) {
if (values[i] === null) {
return true;
}
}
return true;
}
答案 3 :(得分:0)
您可以创建一个具有有效值的新对象,然后遍历该对象并相应地填充页面。下面的函数接受一个对象,并返回仅具有有效值的对象。
function filterObj (obj) {
const result = {};
Object.keys(obj).forEach(key => {
if (obj[key]) result[key] = obj[key];
});
return result;
}
const yourObject = {topBun: "kaiser", middle: null, bottomBun: "kaiser"}
const obj = filterObj(yourObject); // {topBun: "kaiser", bottomBun: "kaiser"}