| 77 | } |
| 78 | |
| 79 | lodash_set(object = {}, path = "", value) { |
| 80 | if (!Array.isArray(path)) path = this.toPath(path) |
| 81 | path |
| 82 | .slice(0, -1) |
| 83 | .reduce( |
| 84 | (previousValue, currentValue, currentIndex) => |
| 85 | (Object(previousValue[currentValue]) === previousValue[currentValue]) |
| 86 | ? previousValue[currentValue] |
| 87 | : previousValue[currentValue] = (/^\d+$/.test(path[currentIndex + 1]) ? [] : {}), |
| 88 | object |
| 89 | )[path[path.length - 1]] = value |
| 90 | return object |
| 91 | } |
| 92 | |
| 93 | toPath(value) { |
| 94 | return value.replace(/\[(\d+)\]/g, '.$1').split('.').filter(Boolean) |