Javascript ES2015检查对象中的一个命名键是否为空

时间:2018-05-30 02:24:54

标签: javascript ecmascript-6

我有一个如下所示的数组

process:Array[3]
0:Object
    office_id:""
1:Object
    office_id:6
2:Object
   office_id:""

我想检查office_id命名密钥是否为空

如果我发现至少有一个非空的office_id,则返回true,如果all为空,则返回false。

您可以看到,office_id的默认值为空字符串。

该对象是动态的,因为我正在使用一些输入选择表单来添加另一个具有office_id的对象,因此如果他们选择了其他对象,则office_id将等于该特定的选择ID。

现在,至于验证目的,我需要检查对象进程是否包含带有数值的office_id。

3 个答案:

答案 0 :(得分:1)

使用简单的for循环和更有效的方式

SELECT c.first_name, c.last_name, p.customer_id, SUM(p.amount) AS total
FROM payment p
INNER JOIN customer c ON c.customer_id = p.customer_id
                     AND p.payment_date < c.call_date
GROUP BY p.customer_id, c.first_name, c.last_name
ORDER BY total DESC

使用ES5过滤器

function () {
  for(i = 0; i < process.length; i++){
    if (process[i].office_id){
      return true;
      break;
    }
  }

  return false;
}

答案 1 :(得分:0)

您可以将some与javascript truthy-ness结合使用,以确定它是否为空。由于0计算为falsey,因此您需要将其作为特殊情况处理。请参阅下面的isEmpty

&#13;
&#13;
const isEmpty = (arr) => arr.some(item => item.office_id === 0 || !!item.office_id);

// This returns false because all the elements are falsey
console.log(isEmpty([
  {
    office_id: "",
  },
  {
    office_id: undefined,
  },
  {
    office_id: null,
  },
  {
    office_id: "",
  },
]));

// This returns true because the number 6
console.log(isEmpty([
  {
    office_id: "",
  },
  {
    office_id: 6,
  },
]));

// This returns true because 0 is special cased
console.log(isEmpty([
  {
    office_id: "",
  },
  {
    office_id: 0,
  },
]));
&#13;
&#13;
&#13;

答案 2 :(得分:0)

使用Array.prototype.some验证阵列中至少有一个成员符合您的条件:

const result = yourArray.some(item => item !== '')