gpt4 book ai didi

javascript - 查找独特的项目集合

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

我有一个卡片列表,其中包含“集合”中的口袋妖怪卡片。数据以 JSON 形式检索(格式化/查询不在我的控制范围内)。

let myList = `
[{'hand': '1', 'cards': {'charmander','pikachu','squirtle'}},
{'hand': '2', 'cards': {'charmander','gyarados','jigglypuff'}},
{'hand': '3', 'cards': {'balbasaur','blastoise','mankey'}}]
`;

我不确定我可以利用什么在该列表中找到唯一的手牌,即 hand 3 将是唯一的手牌,因为它不包含其他手牌中的任何其他牌。

我创建了一个 map ,并使用将每只 变成一个字符串作为键,然后检查键是否已经存在。但是根据上面的数据,我不确定如何确保手牌 3 是真正独特的手牌,因为其他牌中不存在其他牌。

cards = JSON.parse(myList);
let cardMap = new Map();
cards.map((hands) => {
let handAsStr = hands.cards.toString();
let matchingValue = cardMap.has(handAsStr);
if (matchingValue) {
console.log("Entry exists - Not adding " + handAsStr );
}
else {
console.log("Adding: " + handAsStr )
cardMap.set(handAsStr , {hand: hands.hand});
}
});

我考虑过将名称转换为十六进制值,然后搜索以查看该十六进制值是否存在于其他任何地方,但这似乎令人生畏且效率低下。

有什么建议吗?

最佳答案

假设有一个卡片的数组,如果所有卡片的计数都为一,您可以计算所有卡片组的所有卡片并通过检查卡片来过滤数组。

function findUnique(array) {
var count = new Map;
array.forEach(({ cards }) => cards.forEach(c => count.set(c, (count.get(c) || 0) + 1)));
return array.filter(({ cards }) => cards.every(c => count.get(c) === 1));
}

var array = [{ hand: '1', cards: ['charmander', 'pikachu', 'squirtle'] }, { hand: '2', cards: ['charmander', 'gyarados', 'jigglypuff'] }, { hand: '3', cards: ['balbasaur', 'blastoise', 'mankey'] }];

console.log(findUnique(array));

关于javascript - 查找独特的项目集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55552683/

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