gpt4 book ai didi

javascript - 如何对无序数组进行深度比较?

转载 作者:行者123 更新时间:2023-11-30 21:01:47 25 4
gpt4 key购买 nike

我想比较两个不需要有序的数组。我尝试使用 ImmutableJS (fromJS),但它不适用于无序数组。请查看必须等于的示例数组

第一个数组

[
{
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',
},
]

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

最佳答案

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

如果找到散列,则递减散列以检查确切的计数。

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; }

关于javascript - 如何对无序数组进行深度比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47072055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com