Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const arrayToSchema = keys =>
- keys.reduce((schema, _) => {
- if (_.indexOf('.') > -1) {
- const [key, rest] = _.split('.');
- schema[key] = {
- ...schema[key],
- ...arrayToSchema([rest])
- };
- } else {
- schema[_] = true;
- }
- return schema;
- }, {});
- const pick = (obj, schema) =>
- Object.keys(obj).reduce((acc, key) => {
- if (!schema[key]) return acc;
- if (Array.isArray(obj[key])) {
- acc[key] = obj[key].map(_ => pick(_, schema[key]));
- } else {
- acc[key] = obj[key];
- }
- return acc;
- }, {});
- const obj1 = {
- key1: 1,
- key2: 2,
- key3: 3
- };
- const obj2 = {
- key1: 1,
- key2: 2,
- key3: [
- { key5: 5, key6: 6, key7: 7 },
- { key5: 8, key6: 9, key7: 10 },
- { key5: 11, key6: 12, key7: 13 }
- ],
- key4: 4
- };
- console.log(pick(obj1, arrayToSchema(['key1', 'key3'])));
- console.log(
- pick(obj2, arrayToSchema(['key1', 'key3.key5', 'key3.key6', 'key4']))
- );
Add Comment
Please, Sign In to add comment