私は約58000の一意の文字列(partName)を持つ配列を持っています。配列内のアイテムを避ける方法を別のクラスタで繰り返すか?
parts = [
{ _id: 59a942a8c0b7467bf08711df, partName: '0' },
{ _id: 59a94299c0b7467bf084a917, partName: '9129' },
{ _id: 59a94299c0b7467bf084a918, partName: '9130' },
..,
.. ]
ここにコードがあります。私は似たような文字列のクラスタを作成しようとしています。
コードではこれが実行されますが、既にクラスタに接続されているpartNameは別のクラスタに再び表示されます。私はこれを避けたい。 1つの固有のパーツ名は、1つのクラスタにのみ接続してください。ここで
は私が得る例です:あなたは、文字列9132
を見ることができるように
{
"9129": [
"9132",
"9190",
"9279"
]
},
{
"9130": [
"9132",
"9180",
"9190",
"9430"
]
、9190
は、以下のクラスタ内で繰り返されています。 私の質問は、9132
、9190
、9279
という文字列をクラスタ9129
に接続した後で、文字列を削除するにはどうすればよいですか?
function createCluster(arrayOfParts) {
let clusterArray = [];
for (var i = 0; i < 5; i++) {
let cluster = [];
y = 1;
console.log(arrayOfParts[i]);
for (var j = y; j < arrayOfParts.length; j++) {
if (
fuzzball.token_sort_ratio(
arrayOfParts[i].partName,
arrayOfParts[j].partName
) > "70"
) {
if (
arrayOfParts[i].partName.toLowerCase() !==
arrayOfParts[j].partName.toLowerCase() &&
!cluster.includes(arrayOfParts[j].partName)
) {
cluster.push(arrayOfParts[j].partName);
}
}
}
let obj = {};
obj[arrayOfParts[i].partName] = cluster.sort();
clusterArray.push(obj);
}
console.log("clusterArray", JSON.stringify(clusterArray, null, 2));
console.log("clusterArray.length", clusterArray.length);
}