Ignoring Order
Ignoring order, we can take the input array and compare it to the keys like so:
var dayPartsArr = ['WDM','PT','WDD','EF','WKE']; //out of order
var dayPartsMap = {
'PT': 'PRIME TIME',
'WDM': 'WEEKDAY MORNING',
'WDD': 'WEEKDAY DAYTIME',
'EF': 'EARLY FRINGE',
'WKE': 'WEEKEND DAYTIME'
};
dayPartsArr.every(item => ~Object.keys(dayPartsMap).indexOf(item)); // true
// Compare against an array with a missing key
dayPartsArr = ['WDM','PT','FAKE', 'WDD','EF','WKE'];
dayPartsArr.every(item => ~Object.keys(dayPartsMap).indexOf(item)); // false
Note the ~
is the bitwise NOT operator, it helps with indexOf
Previous Answer
You can convert the Object's keys to an array and compare that array, like so:
For more information on Object.keys, check MDN here.
var dayPartsArr = ['PT','WDM','WDD','EF','WKE'];
var dayPartsMap = {
'PT': 'PRIME TIME',
'WDM': 'WEEKDAY MORNING',
'WDD': 'WEEKDAY DAYTIME',
'EF': 'EARLY FRINGE',
'WKE': 'WEEKEND DAYTIME'
};
// Create the comparison function...
function arraysIdentical(a, b) {
var i = a.length;
if (i != b.length) return false;
while (i--) {
if (a[i] !== b[i]) return false;
}
return true;
};
/// compare!
arraysIdentical(dayPartsArr, Object.keys(dayPartsMap)); // true
arraysIdentical
originally suggested by Tim Down