逻辑问题:JS对象数组-检查所有object.properties是否未定义

时间:2018-11-27 22:54:32

标签: javascript vue.js

给出以下vue.js对象:

FormattedData: Object
    1: Object
        approved: true
    2: Object
        approved: undefined
    3: Object
        approved: false
    4: Object
        approved: true

寻找一种明智/雄辩的方法来遍历对象属性approved并在任何未定义的情况下返回false。

这是目前的解决方案:

checkAllApproved() {
    let allApproved = false;
    for(let design in this.orderInfo.FormattedData) {
        if(this.orderInfo.FormattedData.hasOwnProperty(design)) {
            allApproved = this.orderInfo.FormattedData[design].approved;
        }
        if(typeof allApproved == 'undefined') {
            return false;
        }
    }
    return true;
}

2 个答案:

答案 0 :(得分:1)

您可以使用Array.prototype。I1 I0 O 0 0 B0 0 1 B1 1 0 B2 1 1 B3 来测试数组中的任何元素是否具有指定的条件参数。

some

vue_data.some(({approved}) => approved === undefined);

答案 1 :(得分:1)

checkAllApproved() {
    return Object.values(this.orderInfo.FormattedData).every(({approved})=>
        typeof approved !== 'undefined')
}

仅当回调从值对象中提取{approved}属性的回调将对我们创建的数组中的所有所有项目返回true时,every()函数才会返回true: Object.values(this.orderInfo.FormattedData)只是由this.orderInfo.FormattedData对象的所有值组成的数组。

有关Object.values()every()之类的方法的更多信息