忽略顺序
忽略顺序,我们可以将输入数组与键进行比较,如下所示:
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
注意~ 是bitwise NOT operator,它对 indexOf 有帮助
上一个答案
您可以将 Object 的键转换为数组并比较该数组,如下所示:
有关 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最初由Tim Down建议