Je construis un outil pour mon client qui regroupe des mots-clés basés sur les 10 meilleures URL de recherche Google. Le mot-clé est représenté comme objet JavaScript contenant une gamme d'URL. Les critères de regroupement sont que Jusqu'à présent, j'ai réussi à développer l'algorithme fourni ci-dessous, mais il fait encore des doublons et ne groupez pas le mot-clé 100% à droite (Certains mots-clés doivent être dans le même groupe, mais ils ne sont pas). p> Je m'attendais à la sortie de INPUT.JSON à être sortie.csv , mais ma solution soit met moins de mots-clés dans un groupe ou fait les mauvais groupes. P> p>
3 Réponses :
L'un des problèmes possibles pourrait être la façon dont vous filtrez le tableau CODE> DataSet code> en boucle et filtré à l'intérieur de sa propre boucle. Vous pouvez filtrer le jeu de données code> Supprimer le mot clé actuel et le mettre dans une autre variable, puis pourvu sur celui-ci au lieu de modifier Dataset code> lui-même. p>
Regarder le résultat, je ne pense pas que cela soit correct car il en résulte 135 "groupes" et le nombre attendu est 87 et le code d'origine produit 88 p>
Je pense que votre problème est en haut de votre code p>
xxx pré> vous mutation
Dataset code> à l'intérieur de la
DataSet.foreach code> fonction p>
Je pense que cela doit être p>
xxx pré> blockQuote>
Ceci peut être simplifié dans un seul Réduire Code> Invocation Fn pour éviter les effets secondaires et la confusion:
const out = data.reduce((acc, current, index) => {
const maybeGroup = acc.findIndex(
el => _.intersection(current.urls, el.urls).length > 3
);
if (maybeGroup !== -1 || maybeGroup === 0) {
if(!acc[maybeGroup].searches.includes(current.keyword)) {
acc[maybeGroup].searches.push(current.keyword);
return acc;
}
return acc;
} else {
acc.push({
mainKeyword: current.keyword,
searches: [],
urls: current.urls
});
return acc;
}
}, []);
console.log(out.map(x => _.pick(x, ['mainKeyword', 'searches'])))
Dites aux mots-clés 1, 13 et 47 partagent les mêmes 3 URL [A, B, C]. Votre code créera des groupes de [1,13,47], puis [13,47] - est que le comportement souhaité? Il est vraiment difficile d'aller au regard de votre ensemble de données et des résultats attendus pouvez-vous indiquer que quelque chose qui montre le problème au sein de 10 enregistrements?