Javascript 消除Ramda函数中的重复
如何删除Javascript 消除Ramda函数中的重复,javascript,functional-programming,ramda.js,Javascript,Functional Programming,Ramda.js,如何删除compareIndexes中对findIndexInO的重复调用 const a = [ {name: 'charlie', value: 1}, {name: 'bravo', value: 7}, {name: 'delta', value: 12}, {name: 'alpha', value: 19}, ] const propEqName = propEq('name'); const findIndexInO = findIndex(__, a); con
compareIndexes
中对findIndexInO
的重复调用
const a = [
{name: 'charlie', value: 1},
{name: 'bravo', value: 7},
{name: 'delta', value: 12},
{name: 'alpha', value: 19},
]
const propEqName = propEq('name');
const findIndexInO = findIndex(__, a);
const compareIndexes = comparator((from, to) => lt(findIndexInO(propEqName(from)), findIndexInO(propEqName(to))))
const sortOnIndex = sort(compareIndexes);
const decideOrder = (...args) => sortOnIndex(args);
decideOrder('delta', 'charlie'); // ['charlie', 'delta']
decideOrder('bravo', 'alpha'); // ['bravo', 'alpha']
decideOrder('alpha', 'charlie'); // ['charlie', 'alpha']
怎么样
const order = addIndex(reduce)((ord, a, idx) => assoc(a.name, idx, ord), {}, a)
const decideOrder = unapply(sortBy(prop(__, order)))
??因为您已经在函数中嵌入了a
。作为一个额外的好处,如果这对您很重要,您也可以这样做:
decideOrder('delta', 'alpha', 'bravo') //=> ["bravo", "delta", "alpha"]
怎么样
const order = addIndex(reduce)((ord, a, idx) => assoc(a.name, idx, ord), {}, a)
const decideOrder = unapply(sortBy(prop(__, order)))
??因为您已经在函数中嵌入了a
。作为一个额外的好处,如果这对您很重要,您也可以这样做:
decideOrder('delta', 'alpha', 'bravo') //=> ["bravo", "delta", "alpha"]
是否修改findIndexIn0以将结果存储在哈希中?或者甚至从数组中预生成索引散列?修改findIndexIn0以将结果存储在散列中?甚至从数组中预生成索引散列?