确定JavaScript对象数组的一致性

确定JavaScript对象数组的一致性,javascript,Javascript,我有一个函数可以搜索数组对象,并检查数组中的所有对象是否具有相同的属性名。我已经想出了下面的解决方案,但我想知道我的方法是否有潜在的缺陷,或者更简单的方法 var objects = [{ name: 'jon', department: 'HR', experience: 1 }, { name: 'meg',

我有一个函数可以搜索数组对象,并检查数组中的所有对象是否具有相同的属性名。我已经想出了下面的解决方案,但我想知道我的方法是否有潜在的缺陷,或者更简单的方法

var objects = [{
                name: 'jon',
                department: 'HR',
                experience: 1
            }, {
                name: 'meg',
                department: 'billing',
                experience: 2
            }, {
                name: 'tom',
                department: 'accounts',
                experience: 3
            }];


            function isArrayCongruent(array) {
                //array to check congruency
                var objArray = [];
                //return bool for congruency or no
                var flag = false;
                //create array of property names
                for (var i = 0; i < array.length; i++) {
                    var o = [];
                    for (var props in array[i]) {
                        o.push(props);
                    }
                    objArray.push(o);
                }
                //get the count of properties from the first element
                var propCount = objArray[0].length;
                var propList = objArray[0] + '';
                //start comparing elements at second array element
                for (var j = 1; j < objArray.length; j++) {
                    if (propCount === objArray[j].length) {
                        //turn list of properties in into a string for ease of comparison
                        if (propList === objArray[j] + '') {
                            flag = true;
                        }
                        else {
                            flag = false;
                        }
                        flag = true;
                    }
                    else {
                        flag = false;
                    }
                }
                return flag;
            };
            console.log(isArrayCongruent(objects));
var对象=[{
姓名:“乔恩”,
部门:'人力资源',
经验:1
}, {
姓名:“梅格”,
部门:'账单',
经验:2
}, {
名字:“汤姆”,
部门:"帐目",,
经验:3
}];
函数isArrayCongruent(数组){
//检查一致性的数组
var objArray=[];
//返回布尔值是否一致
var标志=假;
//创建属性名称数组
对于(var i=0;i
您不必保留对象的属性数组,而是使用
.hasOwnProperty()
.getOwnPropertyNames()

function isArrayCongruent(array) {
    var pattern = array[0];
    var patternPropertiesCount = Object.getOwnPropertyNames(pattern).length;
    for (var i = 1; i < array.length; i++) {
        var current = array[i];
        if (Object.getOwnPropertyNames(current).length !== patternPropertiesCount) {
            return false;
        }
        for (var prop in current) {
            if (!pattern.hasOwnProperty(prop)) return false;
        }
    }
    return true;
}
函数isArrayCongurent(数组){
变量模式=数组[0];
var patternPropertiesCount=Object.getOwnPropertyNames(pattern).length;
对于(变量i=1;i

getOwnPropertyNames的浏览器支持有多远?@wootscoottinboogie根据IE9+