Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
joelwass committed May 15, 2018
1 parent 1423703 commit e212899
Show file tree
Hide file tree
Showing 8 changed files with 76 additions and 6 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
package-lock.json
node_modules/
.nyc_report/
.coveralls.yml
1 change: 1 addition & 0 deletions .nyc_output/4aea7db16da48fba56ef67bdf2b916fb.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"/Users/jwasserman/WebstormProjects/array-deep-equals/index.js":{"path":"/Users/jwasserman/WebstormProjects/array-deep-equals/index.js","statementMap":{"0":{"start":{"line":1,"column":16},"end":{"line":35,"column":1}},"1":{"start":{"line":2,"column":2},"end":{"line":5,"column":3}},"2":{"start":{"line":4,"column":4},"end":{"line":4,"column":49}},"3":{"start":{"line":4,"column":37},"end":{"line":4,"column":49}},"4":{"start":{"line":7,"column":15},"end":{"line":7,"column":32}},"5":{"start":{"line":8,"column":2},"end":{"line":32,"column":3}},"6":{"start":{"line":9,"column":16},"end":{"line":9,"column":23}},"7":{"start":{"line":10,"column":4},"end":{"line":19,"column":5}},"8":{"start":{"line":11,"column":6},"end":{"line":16,"column":7}},"9":{"start":{"line":13,"column":8},"end":{"line":13,"column":56}},"10":{"start":{"line":13,"column":44},"end":{"line":13,"column":56}},"11":{"start":{"line":15,"column":8},"end":{"line":15,"column":16}},"12":{"start":{"line":18,"column":6},"end":{"line":18,"column":18}},"13":{"start":{"line":21,"column":4},"end":{"line":29,"column":5}},"14":{"start":{"line":22,"column":6},"end":{"line":26,"column":7}},"15":{"start":{"line":24,"column":8},"end":{"line":24,"column":56}},"16":{"start":{"line":24,"column":44},"end":{"line":24,"column":56}},"17":{"start":{"line":25,"column":8},"end":{"line":25,"column":16}},"18":{"start":{"line":28,"column":6},"end":{"line":28,"column":18}},"19":{"start":{"line":31,"column":4},"end":{"line":31,"column":45}},"20":{"start":{"line":31,"column":33},"end":{"line":31,"column":45}},"21":{"start":{"line":34,"column":2},"end":{"line":34,"column":13}},"22":{"start":{"line":37,"column":15},"end":{"line":59,"column":1}},"23":{"start":{"line":38,"column":19},"end":{"line":38,"column":43}},"24":{"start":{"line":39,"column":18},"end":{"line":39,"column":37}},"25":{"start":{"line":40,"column":15},"end":{"line":40,"column":32}},"26":{"start":{"line":42,"column":2},"end":{"line":57,"column":4}},"27":{"start":{"line":43,"column":4},"end":{"line":56,"column":5}},"28":{"start":{"line":44,"column":6},"end":{"line":46,"column":7}},"29":{"start":{"line":45,"column":8},"end":{"line":45,"column":60}},"30":{"start":{"line":47,"column":6},"end":{"line":47,"column":62}},"31":{"start":{"line":49,"column":6},"end":{"line":55,"column":7}},"32":{"start":{"line":50,"column":8},"end":{"line":51,"column":53}},"33":{"start":{"line":50,"column":40},"end":{"line":50,"column":82}},"34":{"start":{"line":51,"column":13},"end":{"line":51,"column":53}},"35":{"start":{"line":52,"column":13},"end":{"line":55,"column":7}},"36":{"start":{"line":53,"column":8},"end":{"line":54,"column":57}},"37":{"start":{"line":53,"column":44},"end":{"line":53,"column":90}},"38":{"start":{"line":54,"column":13},"end":{"line":54,"column":57}},"39":{"start":{"line":58,"column":2},"end":{"line":58,"column":18}},"40":{"start":{"line":61,"column":24},"end":{"line":89,"column":1}},"41":{"start":{"line":63,"column":2},"end":{"line":63,"column":96}},"42":{"start":{"line":63,"column":84},"end":{"line":63,"column":96}},"43":{"start":{"line":65,"column":15},"end":{"line":65,"column":27}},"44":{"start":{"line":66,"column":15},"end":{"line":66,"column":27}},"45":{"start":{"line":68,"column":2},"end":{"line":68,"column":19}},"46":{"start":{"line":69,"column":2},"end":{"line":69,"column":19}},"47":{"start":{"line":71,"column":15},"end":{"line":71,"column":32}},"48":{"start":{"line":72,"column":16},"end":{"line":72,"column":33}},"49":{"start":{"line":74,"column":2},"end":{"line":74,"column":48}},"50":{"start":{"line":74,"column":36},"end":{"line":74,"column":48}},"51":{"start":{"line":76,"column":2},"end":{"line":86,"column":3}},"52":{"start":{"line":77,"column":16},"end":{"line":77,"column":23}},"53":{"start":{"line":79,"column":4},"end":{"line":79,"column":32}},"54":{"start":{"line":79,"column":20},"end":{"line":79,"column":32}},"55":{"start":{"line":81,"column":4},"end":{"line":85,"column":5}},"56":{"start":{"line":82,"column":24},"end":{"line":82,"column":36}},"57":{"start":{"line":84,"column":6},"end":{"line":84,"column":54}},"58":{"start":{"line":84,"column":42},"end":{"line":84,"column":54}},"59":{"start":{"line":88,"column":2},"end":{"line":88,"column":13}},"60":{"start":{"line":91,"column":0},"end":{"line":94,"column":1}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":1,"column":16},"end":{"line":1,"column":17}},"loc":{"start":{"line":1,"column":32},"end":{"line":35,"column":1}},"line":1},"1":{"name":"(anonymous_1)","decl":{"start":{"line":37,"column":15},"end":{"line":37,"column":16}},"loc":{"start":{"line":37,"column":55},"end":{"line":59,"column":1}},"line":37},"2":{"name":"(anonymous_2)","decl":{"start":{"line":42,"column":15},"end":{"line":42,"column":16}},"loc":{"start":{"line":42,"column":22},"end":{"line":57,"column":3}},"line":42},"3":{"name":"(anonymous_3)","decl":{"start":{"line":61,"column":24},"end":{"line":61,"column":25}},"loc":{"start":{"line":61,"column":40},"end":{"line":89,"column":1}},"line":61}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":2},"end":{"line":5,"column":3}},"type":"if","locations":[{"start":{"line":2,"column":2},"end":{"line":5,"column":3}},{"start":{"line":2,"column":2},"end":{"line":5,"column":3}}],"line":2},"1":{"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":48}},"type":"binary-expr","locations":[{"start":{"line":2,"column":6},"end":{"line":2,"column":25}},{"start":{"line":2,"column":29},"end":{"line":2,"column":48}}],"line":2},"2":{"loc":{"start":{"line":4,"column":4},"end":{"line":4,"column":49}},"type":"if","locations":[{"start":{"line":4,"column":4},"end":{"line":4,"column":49}},{"start":{"line":4,"column":4},"end":{"line":4,"column":49}}],"line":4},"3":{"loc":{"start":{"line":10,"column":4},"end":{"line":19,"column":5}},"type":"if","locations":[{"start":{"line":10,"column":4},"end":{"line":19,"column":5}},{"start":{"line":10,"column":4},"end":{"line":19,"column":5}}],"line":10},"4":{"loc":{"start":{"line":11,"column":6},"end":{"line":16,"column":7}},"type":"if","locations":[{"start":{"line":11,"column":6},"end":{"line":16,"column":7}},{"start":{"line":11,"column":6},"end":{"line":16,"column":7}}],"line":11},"5":{"loc":{"start":{"line":13,"column":8},"end":{"line":13,"column":56}},"type":"if","locations":[{"start":{"line":13,"column":8},"end":{"line":13,"column":56}},{"start":{"line":13,"column":8},"end":{"line":13,"column":56}}],"line":13},"6":{"loc":{"start":{"line":21,"column":4},"end":{"line":29,"column":5}},"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":29,"column":5}},{"start":{"line":21,"column":4},"end":{"line":29,"column":5}}],"line":21},"7":{"loc":{"start":{"line":22,"column":6},"end":{"line":26,"column":7}},"type":"if","locations":[{"start":{"line":22,"column":6},"end":{"line":26,"column":7}},{"start":{"line":22,"column":6},"end":{"line":26,"column":7}}],"line":22},"8":{"loc":{"start":{"line":24,"column":8},"end":{"line":24,"column":56}},"type":"if","locations":[{"start":{"line":24,"column":8},"end":{"line":24,"column":56}},{"start":{"line":24,"column":8},"end":{"line":24,"column":56}}],"line":24},"9":{"loc":{"start":{"line":31,"column":4},"end":{"line":31,"column":45}},"type":"if","locations":[{"start":{"line":31,"column":4},"end":{"line":31,"column":45}},{"start":{"line":31,"column":4},"end":{"line":31,"column":45}}],"line":31},"10":{"loc":{"start":{"line":37,"column":22},"end":{"line":37,"column":36}},"type":"default-arg","locations":[{"start":{"line":37,"column":34},"end":{"line":37,"column":36}}],"line":37},"11":{"loc":{"start":{"line":37,"column":38},"end":{"line":37,"column":50}},"type":"default-arg","locations":[{"start":{"line":37,"column":48},"end":{"line":37,"column":50}}],"line":37},"12":{"loc":{"start":{"line":43,"column":4},"end":{"line":56,"column":5}},"type":"if","locations":[{"start":{"line":43,"column":4},"end":{"line":56,"column":5}},{"start":{"line":43,"column":4},"end":{"line":56,"column":5}}],"line":43},"13":{"loc":{"start":{"line":43,"column":8},"end":{"line":43,"column":65}},"type":"binary-expr","locations":[{"start":{"line":43,"column":8},"end":{"line":43,"column":32}},{"start":{"line":43,"column":36},"end":{"line":43,"column":65}}],"line":43},"14":{"loc":{"start":{"line":44,"column":6},"end":{"line":46,"column":7}},"type":"if","locations":[{"start":{"line":44,"column":6},"end":{"line":46,"column":7}},{"start":{"line":44,"column":6},"end":{"line":46,"column":7}}],"line":44},"15":{"loc":{"start":{"line":49,"column":6},"end":{"line":55,"column":7}},"type":"if","locations":[{"start":{"line":49,"column":6},"end":{"line":55,"column":7}},{"start":{"line":49,"column":6},"end":{"line":55,"column":7}}],"line":49},"16":{"loc":{"start":{"line":50,"column":8},"end":{"line":51,"column":53}},"type":"if","locations":[{"start":{"line":50,"column":8},"end":{"line":51,"column":53}},{"start":{"line":50,"column":8},"end":{"line":51,"column":53}}],"line":50},"17":{"loc":{"start":{"line":52,"column":13},"end":{"line":55,"column":7}},"type":"if","locations":[{"start":{"line":52,"column":13},"end":{"line":55,"column":7}},{"start":{"line":52,"column":13},"end":{"line":55,"column":7}}],"line":52},"18":{"loc":{"start":{"line":53,"column":8},"end":{"line":54,"column":57}},"type":"if","locations":[{"start":{"line":53,"column":8},"end":{"line":54,"column":57}},{"start":{"line":53,"column":8},"end":{"line":54,"column":57}}],"line":53},"19":{"loc":{"start":{"line":63,"column":2},"end":{"line":63,"column":96}},"type":"if","locations":[{"start":{"line":63,"column":2},"end":{"line":63,"column":96}},{"start":{"line":63,"column":2},"end":{"line":63,"column":96}}],"line":63},"20":{"loc":{"start":{"line":63,"column":6},"end":{"line":63,"column":82}},"type":"binary-expr","locations":[{"start":{"line":63,"column":6},"end":{"line":63,"column":51}},{"start":{"line":63,"column":55},"end":{"line":63,"column":82}}],"line":63},"21":{"loc":{"start":{"line":63,"column":8},"end":{"line":63,"column":50}},"type":"binary-expr","locations":[{"start":{"line":63,"column":8},"end":{"line":63,"column":27}},{"start":{"line":63,"column":31},"end":{"line":63,"column":50}}],"line":63},"22":{"loc":{"start":{"line":74,"column":2},"end":{"line":74,"column":48}},"type":"if","locations":[{"start":{"line":74,"column":2},"end":{"line":74,"column":48}},{"start":{"line":74,"column":2},"end":{"line":74,"column":48}}],"line":74},"23":{"loc":{"start":{"line":79,"column":4},"end":{"line":79,"column":32}},"type":"if","locations":[{"start":{"line":79,"column":4},"end":{"line":79,"column":32}},{"start":{"line":79,"column":4},"end":{"line":79,"column":32}}],"line":79},"24":{"loc":{"start":{"line":84,"column":6},"end":{"line":84,"column":54}},"type":"if","locations":[{"start":{"line":84,"column":6},"end":{"line":84,"column":54}},{"start":{"line":84,"column":6},"end":{"line":84,"column":54}}],"line":84}},"s":{"0":1,"1":17,"2":12,"3":3,"4":14,"5":14,"6":32,"7":32,"8":4,"9":3,"10":1,"11":2,"12":1,"13":28,"14":6,"15":5,"16":1,"17":4,"18":1,"19":22,"20":2,"21":8,"22":1,"23":33,"24":33,"25":33,"26":33,"27":75,"28":19,"29":15,"30":4,"31":56,"32":39,"33":25,"34":14,"35":17,"36":17,"37":1,"38":16,"39":33,"40":1,"41":9,"42":2,"43":7,"44":7,"45":7,"46":7,"47":7,"48":7,"49":7,"50":2,"51":5,"52":13,"53":13,"54":2,"55":11,"56":21,"57":21,"58":1,"59":2,"60":1},"f":{"0":17,"1":33,"2":75,"3":9},"b":{"0":[12,5],"1":[17,12],"2":[3,9],"3":[4,28],"4":[3,1],"5":[1,2],"6":[6,22],"7":[5,1],"8":[1,4],"9":[2,20],"10":[14],"11":[14],"12":[19,56],"13":[75,71],"14":[15,4],"15":[39,17],"16":[25,14],"17":[17,0],"18":[1,16],"19":[2,7],"20":[9,9],"21":[9,9],"22":[2,5],"23":[2,11],"24":[1,20]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"0d63738b5d23ef5f22bd7337bbec47f1381cfb27","contentHash":"0f6b6350b3331eebdde07e7773b97653_11.7.3"}}
1 change: 1 addition & 0 deletions .nyc_output/5888b7139e16981f325613c53e9e34ba.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
1 change: 1 addition & 0 deletions .nyc_output/89f94659e05bc56e673c5fd9238f0c5d.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
1 change: 1 addition & 0 deletions .nyc_output/9bd8ea24cf9506c3a49041482a33f464.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
14 changes: 9 additions & 5 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,8 @@ const mapify = (arr1, retObject = {}, currKey = '') => {
if (Array.isArray(arr1[key]) || typeof arr1[key] === 'object') {
if (isArray) {
return mapify(arr1[key], retObject, currKey + '[_]')
} else if (isObject) {
return mapify(arr1[key], retObject, currKey + '.' + key)
}
return mapify(arr1[key], retObject, currKey + '.' + key)
} else {
if (isArray) {
if (retObject[currKey + '[_]']) retObject[currKey + '[_]'].push(arr1[key])
Expand All @@ -60,15 +59,20 @@ const mapify = (arr1, retObject = {}, currKey = '') => {
}

const compareUnsorted = (arr1, arr2) => {
if (Array.isArray(arr1) && Array.isArray(arr2)) {
// a man's array does not look like a girl's array
if (arr1.length !== arr2.length) return false
}
if (!(Array.isArray(arr1) && Array.isArray(arr2)) || arr1.length !== arr2.length) return false

const map1 = mapify(arr1)
const map2 = mapify(arr2)

console.log(map1)
console.log(map2)

const keys = Object.keys(map1)
const keys2 = Object.keys(map2)

if (keys.length !== keys2.length) return false

for (let i = 0; i < keys.length; i++) {
const key = keys[i]
// a man has values that a girl does not share
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
"description": "get equality of arrays with nested arrays and nested objects",
"main": "index.js",
"scripts": {
"test": "nyc ava"
"test": "nyc ava",
"coverage": "nyc npm test && nyc report --reporter=text-lcov | ./node_modules/coveralls/bin/coveralls.js"
},
"author": "Joel Wasserman",
"license": "MIT",
Expand Down
59 changes: 59 additions & 0 deletions test.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,46 @@ test('deeper not equal because different orders', t => {
t.false(compare(arr1, arr3))
})

test('not equal arrays with different types at indexes', t => {
t.false(compare(arr5, arr1))
})

test('compare nested arrays not equal', t => {
t.false(compare([[1, 2, 3]], [[1, 2]]))
})

test('compare nested objects not equal', t => {
t.false(compare([{1: 'one'}], [{1: 'two'}]))
})

test('one object and one not an object', t => {
t.false(compare([{ hi: 'world' }], [2]))
})

test('array lengths not the same', t => {
t.false(compare([1, 2, 3], [1, 2]))
})

test('compare unsorted array lengths not the same', t => {
t.false(compareUnsorted([1, 2, 3], [1, 2]))
})

test('compare unsorted array lengths not the same', t => {
t.false(compareUnsorted([{ hi: { hello: 'world', 1: 2 }}], [1]))
})

test('compare unsorted with nested object', t => {
t.false(compareUnsorted([{ hi: 'world' }, { hi: 'world' }], [1, 2]))
})

test('compare unsorted one object and one not an object', t => {
t.false(compareUnsorted([{ hi: 'world' }], [2]))
})

test('compare unsorted long chain with not same', t => {
t.false(compareUnsorted([0, 2, 3], [5, 6, 6]))
})

test('arrays not equal unsorted', t => {
t.false(compareUnsorted(a, c))
})
Expand All @@ -25,6 +65,10 @@ test('arrays equal unsorted', t => {
t.true(compareUnsorted(a, b))
})

test('nested arrays and objects unsorted', t => {
t.false(compareUnsorted([{a: {}}], [1]))
})

test('nested arrays equal unsorted', t => {
t.true(compareUnsorted(arr1, arr4))
})
Expand Down Expand Up @@ -77,6 +121,21 @@ let arr4 = [
'test3',
]

let arr5 = [
[1, 2],
3,
{ 'hello': 'world' },
'test',
{
a: 12,
b: 13,
c: 14,
d: [ 71, 72, 73, { 'sonested': true } ]
},
'test2',
'test3',
]

let arr3 = [
3,
1,
Expand Down

0 comments on commit e212899

Please sign in to comment.