首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ramda.js替换键值

使用ramda.js替换键值
EN

Stack Overflow用户
提问于 2020-02-28 00:01:51
回答 2查看 329关注 0票数 0

我有以下对象数组:

代码语言:javascript
复制
const originalArray = [
  {name: 'name1', value: 10},
  {name: 'name2', value: 20}
]

和下面的对象

代码语言:javascript
复制
names = {
  name1: 'generic_name_1',
  name2: 'generic_name_2'
}

我希望第一个数组像这样转换:

代码语言:javascript
复制
[
  {name: 'generic_name_1', value: 10},
  {name: 'generic_name_2', value: 20}
]

到目前为止,我尝试了以下几点:

代码语言:javascript
复制
const replaceName = (names, obj) => {
  if(obj['name'] in names){
    obj['name'] = names[obj['name']];
  }
  return obj;
}
const modifiedArray = R.map(replaceName(names), originalArray)

有没有更具ramda风格的方法呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-28 01:09:01

我不会为此使用任何Ramda函数。我会简单地避免改变原来的代码,也许代码是这样的:

代码语言:javascript
复制
const transform = (names) => (arr) => arr .map (
  ({name, ... rest}) => ({name: names [name] || name, ... rest})
)

const originalArray = [{name: 'name1', value: 10},{name: 'name2', value: 20}]
const names = {name1: 'generic_name_1',name2: 'generic_name_2'}

console .log (
  transform (names) (originalArray)
)

票数 0
EN

Stack Overflow用户

发布于 2020-02-28 01:05:40

在Ramda函数中使用原生JS并不是不正确的。代码中唯一的问题是修改了原始对象-- obj['name'] = names[obj['name']];

我将使用R.when检查names对象中是否存在该名称,如果存在,则将该对象演变为新名称。如果不是,则返回原始对象。

代码语言:javascript
复制
const { flip, has, prop, map, when, pipe, evolve } = R

const hasProp = flip(has)
const getProp = flip(prop)

const fn = names => map(when(
  pipe(prop('name'), hasProp(names)),
  evolve({
    name: getProp(names)
  })
))

const originalArray = [{"name":"name1","value":10},{"name":"name2","value":20},{"name":"name3","value":30}]
const names = {"name1":"generic_name_1","name2":"generic_name_2"}

const result = fn(names)(originalArray)

console.log(result)
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.0/ramda.js"></script>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60437218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档