Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const getRange = (start, end) => {
- let list = []
- if (start <= end) {
- for (let i = start; i <= end; i++)
- list.push(i)
- }
- return list
- }
- const RepeatableField = (fields, prefix) => ({
- expand: (num) =>
- getRange(1, num)
- .reduce((obj, num) => {
- obj[prefix + num] = Object.assign({}, fields)
- return obj
- }, {}),
- expandDependsOn (num, field) {
- const original = this.expand(num)
- const keys = Object.keys(original)
- return keys.reduce((obj, key, index) => {
- obj[key].dependsOn = {
- [field]: getRange(index + 1, num)
- }
- return obj
- }, original)
- },
- flatten: (original) =>
- Object.keys(original).reduce((obj, key) => {
- if (key.indexOf(prefix) === 0) {
- obj[prefix].push(original[key])
- } else {
- obj[key] = original[key]
- }
- return obj
- }, {
- [prefix]: []
- })())
- })
Add Comment
Please, Sign In to add comment