记录一下工作中常用的ramda处理数据方法

一、取出对象中的某个属性

const people = {
	name:"jack",
	age:18,
	sex:"男"
}
// 取出people对象中的name属性
R.pathOr('--',["name"],people) //根据路径去查找 如果people路径上没有name那么用‘--’来代替,通常用来处理页面需要显示相关字段 如果字段不存在显示--
R.propOr("--","name",prople) // 取出people对象中的name属性 如果不存在返回-- 和pathOr类似,为了防止页面异常显示出undefined
R.prop("name",people) // 如果对象上不存在name属性 返回undefined
R.path(["name"],people) // 和prop一样如果对象不存在值 返回undefined

path和prop方法的使用上有类似的地方,两个都可以在后面追加Or可以指定默认值。但prop只能取出对象中指定的属性值,而path是取出对应路径上的值,在对象属性比较复杂有嵌套时能够很快的取出对应的值。比如

const people={
	name:"jack",
	age:18,
	sex:"男",
	favour:["跳舞","唱歌"]
}
R.path(["favour",0],people)//就可以取出people中favour数组的第一个元素的值

const obj={
	a:{b:{c:1,d:2}}
}
R.path(["a","b","c"],people)//通过指定路径 就可以取出c的值

二、取出集合的某个属性值并转化成逗号隔开的字符串

const interests = [{storeName:"门店1",id:1},{storeName:"门店2",id:2}]
const stores = R.pluck('storeName',interests) //=>["门店1","门店2"] 
//一般页面显示时还会把她转换成字符串 
const storeName = R.join(',',stores) //=>"门店1,门店2" 用于显示

pluck也可以用于处理前端在提交参数时,后端需要集合中的id数组。

const selectObj = [{id:1,...},{id:2,...}...{id:14,...}]
const ids = R.pluck('id',selectObj) //=>[1,2,...,14]

三、删除对象中的某个属性

R.dissoc('b',{a:1,b:2,c:3}) //=>{a:1,c:3}
R.omit(['a','b'],{a:1,b:2,c:3,d:4}) //=>{b:2,c:3}

R.dissoc()只能删除某个属性,omit可以同时删除对象的多个属性

四、取出集合中某个属性满足条件的元素

const obj = [
	{type:"Food",name:"面条"},
	{type:"Animal",name:"猫咪"}{type:"Food",name:"大米"}
]
R.find(R.propEq("type", "Food"),obj) //取出type类型为Food的元素

五、通过R.map()遍历出带有index的列表

const list = [
	{name:"jack"},
	{name:"lucy"}
]

  {R.addIndex(R.map)(
      (item, index) => (
       		<Fragment key={index}>
            	<div>{R.propOr("--","name",item)}</div>
            </Fragment>
       ),
       R.defaultTo([],list)
  )}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值