1. /**
  2. * Diffs two datasets of strings and suggests quick fixes.
  3. * @param {string[]} dataset1 The first dataset.
  4. * @param {string[]} dataset2 The second dataset.
  5. * @returns {object} An object containing diff results and suggested fixes.
  6. */
  7. function diffStringDatasets(dataset1, dataset2) {
  8. const diffResults = {
  9. added: [],
  10. removed: [],
  11. modified: [],
  12. };
  13. // Find added elements
  14. for (const item of dataset2) {
  15. if (!dataset1.includes(item)) {
  16. diffResults.added.push({ value: item, index: -1 }); // Index is -1 for added elements
  17. }
  18. }
  19. // Find removed elements
  20. for (const item of dataset1) {
  21. if (!dataset2.includes(item)) {
  22. diffResults.removed.push({ value: item, index: dataset1.indexOf(item) }); // Store original index
  23. }
  24. }
  25. // Find modified elements
  26. for (let i = 0; i < Math.min(dataset1.length, dataset2.length); i++) {
  27. if (dataset1[i] !== dataset2[i]) {
  28. diffResults.modified.push({
  29. index: i,
  30. oldValue: dataset1[i],
  31. newValue: dataset2[i],
  32. });
  33. }
  34. }
  35. return diffResults;
  36. }
  37. /**
  38. * Suggests quick fixes based on the diff results.
  39. * @param {object} diff The diff results object.
  40. * @returns {string[]} An array of suggested fixes.
  41. */
  42. function suggestQuickFixes(diff) {
  43. const fixes = [];
  44. // Suggest adding missing elements
  45. if (diff.added.length > 0) {
  46. fixes.push(`Add missing elements: ${diff.added.map(x => x.value).join(', ')}`);
  47. }
  48. // Suggest removing unused elements
  49. if (diff.removed.length > 0) {
  50. fixes.push(`Remove unused elements: ${diff.removed.map(x => x.value).join(', ')}`);
  51. }
  52. // Suggest modifying differing elements (inline fixes)
  53. if (diff.modified.length > 0) {
  54. diff.modified.forEach(item => {
  55. fixes.push(`Modify element at index ${item.index}: Change from '${item.oldValue}' to '${item.newValue}'`);
  56. });
  57. }
  58. return fixes;
  59. }
  60. // Example Usage:
  61. // const dataset1 = ["apple", "banana", "cherry"];
  62. // const dataset2 = ["apple", "orange", "cherry", "grape"];
  63. // const diff = diffStringDatasets(dataset1, dataset2);
  64. // const fixes = suggestQuickFixes(diff);
  65. // console.log("Diff Results:", diff);
  66. // console.log("Suggested Fixes:", fixes);

Add your comment