hulin32 / blog

personal blog, new article on https://www.hulin.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

函数式编程

hulin32 opened this issue · comments

commented

这里以Ramda举例:

import * as R from 'ramda';
const arrayData = [
  {
    attributes: {
      uri: { url: 'test' },
    }
  }
];
const DOMAIN = 'http://domain.com/';

// normal way
function addDomainForUrl(included) {
  return included.map(item => {
    const obj = item;
    if (obj.attributes.uri) {
      obj.attributes.uri.url = `${DOMAIN}${obj.attributes.uri.url}`;
    }
    if (obj.attributes.url) {
      obj.attributes.url = `${DOMAIN}${obj.attributes.url}`;
    }
    return obj;
  });
}
// addDomainForUrl(arrayData);

// functional way
const addDomain = (url) => `${DOMAIN}${url}`;
const transformations = {
  attributes: {
    url: addDomain,
    uri: {
     url: addDomain
  }
  },
}
//R.map(R.evolve(transformations), arrayData);