count-objects
Advanced tools
+0
-0
@@ -0,0 +0,0 @@ MIT License |
+5
-2
| { | ||
| "name": "count-objects", | ||
| "version": "1.3.2", | ||
| "version": "1.3.3", | ||
| "description": "Counts objects for each value", | ||
| "publishConfig": { | ||
| "registry": "https://registry.npmjs.org" | ||
| }, | ||
| "main": "src/index.js", | ||
@@ -14,3 +17,3 @@ "scripts": { | ||
| "chai": "^4.2.0", | ||
| "mocha": "^8.2.1", | ||
| "mocha": "^10.2.0", | ||
| "nodemon": "^2.0.6", | ||
@@ -17,0 +20,0 @@ "prettier": "2.2.1" |
+0
-0
@@ -0,0 +0,0 @@ # count-objects |
@@ -0,0 +0,0 @@ const uniqueKey = Math.random().toString(36).split(".")[1]; |
@@ -44,3 +44,3 @@ const { | ||
| const add = (union, obj, options = {}) => { | ||
| const { uniqueKey = uniqueKeyName, uniqueKeyArr } = options || {}; | ||
| const { uniqueKey = uniqueKeyName, uniqueKeyArr } = options; | ||
@@ -143,3 +143,3 @@ if (!Object.keys(obj).length) { | ||
| const intersectFilters = (union, filters, options) => { | ||
| const intersectFilters = (union, filters) => { | ||
| if (!filters.length) { | ||
@@ -179,3 +179,2 @@ return { intersection: null, countIntersections: null }; | ||
| const prettyKey = keyValArr.join(pDelimiter); | ||
| const count = flatCountArr[0][key]; | ||
| const counts = flatCountArr.reduce((acc, flatCount, idx) => { | ||
@@ -182,0 +181,0 @@ const countName = idx ? `unique-key-${idx}` : "count"; |
+0
-1
@@ -1,2 +0,1 @@ | ||
| const { delimiter, uniqueKey, allObjects } = require("./constants"); | ||
| const { | ||
@@ -3,0 +2,0 @@ add, |
@@ -0,0 +0,0 @@ const { expect } = require("chai"); |
-127
| const { CountObjects } = require("./index"); | ||
| const objects = [ | ||
| { | ||
| fruit: { | ||
| olive: "Arbequina", | ||
| apple: "Lady Alice", | ||
| orange: "Valencia", | ||
| }, | ||
| }, | ||
| { | ||
| fruit: { | ||
| olive: "Kalamata", | ||
| apple: "Lady Alice", | ||
| }, | ||
| }, | ||
| ]; | ||
| const co = new CountObjects(objects); | ||
| const countObject = co.count(); | ||
| console.log(JSON.stringify(countObject, undefined, 2)); | ||
| console.log(countObject); | ||
| const countTable = co.table(); | ||
| console.log(JSON.stringify(countTable, undefined, 2)); | ||
| console.table(countTable); | ||
| co.add([ | ||
| { | ||
| fruit: { | ||
| orange: "Valencia", | ||
| apple: "Lady Alice", | ||
| }, | ||
| }, | ||
| ]); | ||
| console.table(co.table()); | ||
| // filter objects with 'Valencia' oranges | ||
| co.addFilter(["fruit", "orange", "Valencia"]); | ||
| console.log("filter objects with 'Valencia' oranges"); | ||
| console.table(co.table()); | ||
| console.log("filter objects with 'Arbequina' olives"); | ||
| co.addFilter(["fruit", "olive", "Arbequina"]); | ||
| console.table(co.table()); | ||
| console.log(co.getFilters()); | ||
| const flowers = [ | ||
| { | ||
| flowers: { | ||
| color: "black", | ||
| type: "Tulip", | ||
| height: 12, | ||
| }, | ||
| }, | ||
| { | ||
| flowers: { | ||
| color: "black", | ||
| type: "Tulip", | ||
| height: 10, | ||
| }, | ||
| }, | ||
| { | ||
| flowers: { | ||
| color: "white", | ||
| type: "Tulip", | ||
| height: 10, | ||
| }, | ||
| }, | ||
| { | ||
| flowers: { | ||
| type: "Tulip", | ||
| height: 13, | ||
| }, | ||
| }, | ||
| ]; | ||
| const countUniqueValues = new CountObjects(flowers, { | ||
| uniqueKeys: [ | ||
| ["flowers", "color"], | ||
| ["flowers", "height"], | ||
| ], | ||
| }); | ||
| // const table = uniqueColorHeight.table(); | ||
| console.table(countUniqueValues.table()); | ||
| const clone = co.clone(); | ||
| console.log(clone === co); | ||
| co.clearFilters(); | ||
| console.log(co.getFilters()); | ||
| // [] | ||
| const filter = ["fruit", "orange", "Valencia"]; | ||
| co.addFilter(["a", 1]); | ||
| co.addFilter(["b", 2]); | ||
| co.addFilter(["c", 3]); | ||
| console.log(co.getFilters()); | ||
| co.removeFilter(["b", 2]); | ||
| console.log(co.getFilters()); | ||
| const objects2 = [ | ||
| { a: 1, b: 2 }, | ||
| { a: 1, b: 2, c: 3 }, | ||
| { a: 1, b: 2, c: 3, d: 4 }, | ||
| { a: 1, b: 2, c: 3, d: 4, e: 5 }, | ||
| { a: 1 }, | ||
| ]; | ||
| const co3 = new CountObjects(objects2); | ||
| co3.addFilter(["a", "1"]); | ||
| co3.addFilter(["b", "2"]); | ||
| co3.addFilter(["c", "3"]); | ||
| co3.addFilter(["d", "4"]); | ||
| co3.addFilter(["e", "5"]); | ||
| console.log(co3.filtersCount()); | ||
| co3.clearFilters(); | ||
| co3.addFilter(["b", "2"]); | ||
| co3.addFilter(["d", "4"]); | ||
| co3.addFilter(["c", "3"]); | ||
| co3.addFilter(["e", "5"]); | ||
| co3.addFilter(["a", "1"]); | ||
| console.log(co3.filtersCount()); |
41064
-8.94%9
-10%1069
-9.48%