diff options
author | Yonaba <roland.yonaba@gmail.com> | 2017-10-26 12:09:13 +0300 |
---|---|---|
committer | Yonaba <roland.yonaba@gmail.com> | 2017-10-26 12:09:13 +0300 |
commit | e2ec347d1f30a813f4c2f085849b2d2c8bbc89b5 (patch) | |
tree | ba4274ba1826daf068b655797451b8ff065056eb | |
parent | 4c72d2c3dd80e9d8cf15d4d17b88470f404a69a6 (diff) |
sortBy now sorts in-place (Fixes #39)
-rw-r--r-- | moses.lua | 7 | ||||
-rw-r--r-- | moses_min.lua | 3 |
2 files changed, 7 insertions, 3 deletions
@@ -510,7 +510,7 @@ end -- @name sortBy -- @param t a table -- @param[opt] transform a `transform` function to sort elements prototyped as `transform (v)`. Defaults to @{identity} --- @param[optchain] comp a comparision function, defaults to the `<` operator +-- @param[optchain] comp a comparison function, defaults to the `<` operator -- @return a new array of sorted values -- @see sort function _.sortBy(t, transform, comp) @@ -524,7 +524,10 @@ function _.sortBy(t, transform, comp) _t[#_t+1] = {value = v, transform = f(v)} end) t_sort(_t, function(a,b) return comp(a.transform, b.transform) end) - return _.pluck(_t, 'value') + _.each(t, function(i) + t[i] = _t[i].value + end) + return t end --- Splits a table into subsets groups. diff --git a/moses_min.lua b/moses_min.lua index bb31fc4..7f45b72 100644 --- a/moses_min.lua +++ b/moses_min.lua @@ -88,7 +88,8 @@ local bdb=_db or bab.identity if bab.isString(_db)then bdb=function(ddb)return ddb[_db]end end;adb=adb or dab;local cdb={} bab.each(dcb,function(ddb,__c) cdb[#cdb+1]={value=__c,transform=bdb(__c)}end) -cca(cdb,function(ddb,__c)return adb(ddb.transform,__c.transform)end)return bab.pluck(cdb,'value')end +cca(cdb,function(ddb,__c)return adb(ddb.transform,__c.transform)end) +bab.each(dcb,function(ddb)dcb[ddb]=cdb[ddb].value end)return dcb end function bab.groupBy(dcb,_db,...)local adb={...}local bdb={} bab.each(dcb,function(cdb,ddb)local __c=_db(cdb,ddb,c_b(adb)) if |