gpt4 book ai didi

javascript - Ramda 忽略键和值(如果它们都匹配)

转载 作者:行者123 更新时间:2023-11-28 14:56:40 25 4
gpt4 key购买 nike

我有一个包含一些数据的对象。我想挑选某些键,然后如果键和值都匹配,则省略它们。这是我的目标:

const obj = {
title: 'some title',
description: 'some descrption',
image: 'default_image.png'
}

我想做的是提取descriptionimage,然后省略image(如果它的值为'default_image.png'

const fn = R.compose(
// if image === 'default_image.png' then omit it
R.pickAll(['description', 'image'])
)

不确定上面第二部分使用的最佳 ramda 函数是什么。

最佳答案

我可能会做类似的事情

const fn = pipe(
when(propEq('image', 'default_image.png'), dissoc('image')),
pick(['description', 'image'])
);

dissoc返回删除了特定键的对象的副本。 propEq测试对象的给定属性是否与提供的值匹配。和when采用谓词和转换函数。如果谓词与提供的数据匹配,则返回对该数据调用转换函数的结果,否则返回该数据不变。

请注意,我选择了 pick而不是pickAll 。唯一的区别是 pick 会跳过它找不到的键,pickAll 返回它们的值 undefined

您可以在 Ramda REPL 中看到这一点

如果您始终要操作列表而不是单个对象,则可以从 pick 切换到 project :

const fn = pipe(
project(['description', 'image']),
map(when(propEq('image', 'default_image.png'), dissoc('image')))
);

fn(objects);

这个也可以在 Ramda REPL 上找到。

关于javascript - Ramda 忽略键和值(如果它们都匹配),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42610104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com