在 Reactjs 中的对象数组中查找重复属性的数量
2022-08-28
370
我有以下代码,它工作正常`
someVar.getNftsByCollections(['abcs']).then((obj) => {
obj.filter(nft => nft.sold === true)
.map(nft => console.log(nft))
});
})`
并且它安慰了我这样的数据
{ name: "Common Pass"
owner: "abc1"
placeholderNft: false
position: 1509
price: 1000}
现在我有 100 个这样的对象,这让我很安慰,但现在我想找到重复的所有者数量,那么我该如何扩展我的代码呢。简单来说,例如有其他具有相同所有者 abc1 的记录,大约有 12 个,所以我该如何实现呢
2个回答
var dublicates = {}
someVar.getNftsByCollections(['abcs']).then((obj) => {
obj.filter(nft => {
dublicates[nft.owner] = dublicates[nft.owner] ? dublicates[nft.owner] + 1 : dublicates[nft.owner]
return(nft.sold === true)
})
.map(nft => console.log(nft))
});
})
actural_dublicate =Object.keys(dublicates).filter(key => dublicates[key] > 1)
Prosenjit Chongder
2022-08-28
您可以使用
reduce
来迭代此数组并生成格式的计数。
{ owner: 'abc1', count: 12 }
这样您将获得:
someVar.getNftsByCollections(['abcs']).then((obj) => {
.filter((nft) => nft.sold)
.reduce((accObj, nft) => {
const owner = nft.owner;
const accountedOwner = accObj.find((obj) => obj.owner === owner);
if (!accountedOwner) {
accObj.push({ owner, count: 1 });
} else {
accountedOwner.count++;
}
return accObj;
}, []);
})
您可以在以下位置试用:
https://codesandbox.io/s/happy-frog-bx6kxm?file=/src/App.js
Johannes
2022-08-28