forked from srcagency/object-diff
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
44 lines (34 loc) · 717 Bytes
/
index.js
File metadata and controls
44 lines (34 loc) · 717 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
'use strict';
strict.custom = custom;
module.exports = strict;
function strict(){
return diff(null, [].slice.call(arguments, 0));
}
function custom( opts ){
return diff(opts, [].slice.call(arguments, 1));
}
function diff( opts, subjects ){
var length = subjects.length;
var ref = subjects[0];
var diff = {};
var equal = opts && opts.equal || isStrictEqual;
var c;
var keys;
var keysLength;
var key;
var u;
for (var i = 1;i < length;i++) {
c = subjects[i];
keys = Object.keys(c);
keysLength = keys.length;
for (u = 0;u < keysLength;u++) {
key = keys[u];
if (!equal(c[key], ref[key]))
diff[key] = c[key];
}
}
return diff;
}
function isStrictEqual( a, b ){
return a === b;
}