forked from simonxlg/syncobj
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpatch.js
More file actions
24 lines (23 loc) · 658 Bytes
/
Copy pathpatch.js
File metadata and controls
24 lines (23 loc) · 658 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function patch(obj,diff){
var merge = function(o,k,v){
var curr = o;
var arr = k.split(".")
var len = arr.length
var key = ""
for (var i = 1; i < len-1; i++) {
if (isNaN(Number(arr[i]))){
key = arr[i]
}else{
key = (Number(arr[i]) -1)
}
curr = curr[key]
}
curr[arr[len-1]] = (v == "nil"?null:v)
}
for (var i =0 ;i<diff.length;i++){
for(var key in diff){
merge(obj,key,diff[key])
}
}
return obj
}