我有一个如下所示的数组
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。
答案 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
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;
答案 2 :(得分:0)
使用Array.prototype.some
验证阵列中至少有一个成员符合您的条件:
const result = yourArray.some(item => item !== '')