筛选出值为null或空字符串的对象属性

时间:2020-06-24 17:56:30

标签: javascript html

我有一个网页,该网页通过ajax调用将信息加载到数据库上。我要拉一个奇异的对象,如果该对象中的特定字段为null或为空,则不会填充页面的该部分。例如,假设我们有一个名为Hamburger的对象,其字段为topBun =“ kaiser”,middle = null和bottomBun =“ kaiser”。我想根据这些结果设置每个字段。

在我的脑海中,我想我必须要做一个if([variable] == null){//将变量设置为page}。我想知道的是,是否有更简单或更完善的方法来做到这一点?

4 个答案:

答案 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 值,而后者仅适用于nullundefined

答案 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"}