如何深入比较无序数组?

我想比较两个不必要的数组。 我试图使用ImmutableJS(fromJS),但它不工作与一个无序的数组。 请看看必须相等的示例数组

第一arrays

[ { Jnam: 'processor', Ci: 'New York', }, { Jnam: 'keyboard', Ci: 'Washington', }, { Jnam: 'display', Ci: 'Seattle', }, ] 

第二

 [ { Jnam: 'keyboard', Ci: 'Washington', }, { Jnam: 'processor', Ci: 'New York', }, { Ci: 'Seattle', Jnam: 'display', }, ] 

你能回答我在这种情况下做什么吗?

       

网上收集的解决方案 "如何深入比较无序数组?"

你可以创build一个哈希表,其中的键作为第一个属性,值作为第二个属性,并用它检查第二个数组。

如果发现哈希递减哈希来检查确切的计数。

 function getKeyValue(object) { var keys = Object.keys(object).sort(); return { key: keys.join('|'), value: keys.map(function (k) { return object[k]; }).join('|') }; } var first = [{ Jnam: 'processor', Ci: 'New York', }, { Jnam: 'keyboard', Ci: 'Washington' }, { Jnam: 'display', Ci: 'Seattle' }], second = [{ Jnam: 'keyboard', Ci: 'Washington', }, { Jnam: 'processor', Ci: 'New York' }, { Ci: 'Seattle', Jnam: 'display' }], hash = Object.create(null), count = 0, result; first.forEach(function (o) { var kv = getKeyValue(o); hash[kv.key] = hash[kv.key] || {}; hash[kv.key][kv.value] = (hash[kv.key][kv.value] || 0) + 1; count++; }); result = second.every(function (o) { var kv = getKeyValue(o); count--; if (hash[kv.key] && hash[kv.key][kv.value]) { hash[kv.key][kv.value]--; return true; } }) && !count; console.log(result); console.log(hash); 
 .as-console-wrapper { max-height: 100% !important; top: 0; }