diff --git a/.babelrc b/.babelrc index 338f075..7521eb0 100644 --- a/.babelrc +++ b/.babelrc @@ -1,7 +1,7 @@ { - "env": { - "test": { - "plugins": ["@babel/plugin-transform-modules-commonjs"] - } + "env": { + "test": { + "plugins": ["@babel/plugin-transform-modules-commonjs"] } -} \ No newline at end of file + } +} diff --git a/.eslintrc.json b/.eslintrc.json index b81b01e..5f1c61c 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,5 +1,5 @@ { - "plugins": ["jsdoc", "prefer-arrow","sonarjs"], + "plugins": ["jsdoc", "prefer-arrow", "sonarjs"], "parserOptions": { "sourceType": "module" }, @@ -78,7 +78,6 @@ ], "camelcase": [2, { "properties": "never" }], - "prefer-arrow/prefer-arrow-functions": ["warn"], "sonarjs/prefer-immediate-return": 0, diff --git a/package-lock.json b/package-lock.json index 47c77d9..9c324ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "cspell": "^6.31.2", "eslint": "^8.45.0", "eslint-config-airbnb-base": "^15.0.0", + "eslint-formatter-codeframe": "^7.32.1", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jsdoc": "^46.4.4", "eslint-plugin-prefer-arrow": "^1.2.3", @@ -3482,6 +3483,98 @@ "eslint-plugin-import": "^2.25.2" } }, + "node_modules/eslint-formatter-codeframe": { + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/eslint-formatter-codeframe/-/eslint-formatter-codeframe-7.32.1.tgz", + "integrity": "sha512-DK/3Q3+zVKq/7PdSYiCxPrsDF8H/TRMK5n8Hziwr4IMkMy+XiKSwbpj25AdajS63I/B61Snetq4uVvX9fOLyAg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/eslint-formatter-codeframe/node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/eslint-formatter-codeframe/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint-formatter-codeframe/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint-formatter-codeframe/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint-formatter-codeframe/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint-formatter-codeframe/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint-formatter-codeframe/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/eslint-import-resolver-node": { "version": "0.3.7", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", diff --git a/package.json b/package.json index 3836a4a..0fb53df 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "cspell": "^6.31.2", "eslint": "^8.45.0", "eslint-config-airbnb-base": "^15.0.0", + "eslint-formatter-codeframe": "^7.32.1", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jsdoc": "^46.4.4", "eslint-plugin-prefer-arrow": "^1.2.3", diff --git a/src/difference/difference.js b/src/difference/difference.js new file mode 100644 index 0000000..e6e0389 --- /dev/null +++ b/src/difference/difference.js @@ -0,0 +1,16 @@ +export const difference = (firstArray, secondArray) => { + + let mySolution = []; + for (let myNum of firstArray) { + if (!secondArray.includes(myNum) && !mySolution.includes(myNum) ) { + mySolution.push(myNum) ; + } + } + return mySolution; +}; + +// export const difference = (firstArray, secondArray) => { +// const firstSet = new Set(firstArray); +// const secondSet = new Set(secondArray); +// return firstSet.filter((num) => !secondSet.has(num)); +// }; \ No newline at end of file diff --git a/src/difference/difference.spec.js b/src/difference/difference.spec.js new file mode 100644 index 0000000..e93aeeb --- /dev/null +++ b/src/difference/difference.spec.js @@ -0,0 +1,24 @@ +import { difference } from './difference.js'; + +describe('all the tests', () => { + it('works with no values in first array', () => { + expect(difference([], [1, 2, 3, 4, 5])).toEqual([]); + }); + it('works with no values in second array', () => { + expect(difference([1, 2, 3, 4, 5], [])).toEqual([1, 2, 3, 4, 5]); + }); + it('works with no values in either array', () => { + expect(difference([], [])).toEqual([]); + }); + it('gives proper values for a basic non-repeating arrays', () => { + expect(difference([1, 2, 3, 11], [10, 11, 2, 4, 5])).toEqual([1, 3]); + }); + it('works with repeated numbers in either array', () => { + expect( + difference( + [1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5], + [3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], + ), + ).toEqual([5]); + }); +});