gpt4 book ai didi

javascript - lodash/ramda 中的这些比较案例是否有替代方案?

转载 作者:行者123 更新时间:2023-12-03 04:14:49 31 4
gpt4 key购买 nike

这是我的实现示例。

function comparator(values = [], matchValue, mapFn, reduceFn) {
if (values.length === 0) {
return undefined !== matchValue;
}

return values
.map(mapFn)
.reduce(reduceFn);
}

/**
* const a = 1, b = 2, c = 3;
* a === 1 || b === 1 || c === 1 // true
* isEqualOr([1, 2, 3], 1) // true
*/
export const isEqualOr = (values, matchValue) => comparator(
values,
matchValue,
value => value === matchValue,
(prev, curr) => prev || curr
);
/**
* a === 1 && b === 1 && c === 1 // false
* isEqualAnd([1, 2, 3], 1) // false
*/
export const isEqualAnd = (values, matchValue) => comparator(
values,
matchValue,
value => value === matchValue,
(prev, curr) => prev && curr
);
/**
* a !== 1 || b !== 1 || c !== 1 // true
* isNotEqualOr([1, 2, 3], 1) // true
*/
export const isNotEqualOr = (values, matchValue) => comparator(
values,
matchValue,
value => value !== matchValue,
(prev, curr) => prev || curr
);
/**
* a !== 1 && b !== 1 && c !== 1 // false
* isNotEqualAnd([1, 2, 3], 1) // false
*/
export const isNotEqualAnd = (values, matchValue) => comparator(
values,
matchValue,
value => value !== matchValue,
(prev, curr) => prev && curr
);
  1. 您在日常工作中需要这样的实用程序吗?
  2. 您如何解决这项任务?
  3. 您对此实现有何看法?
  4. lodash/ramda 库中有适用于这些情况的实用程序吗?

最佳答案

在 Ramda 中,我会使用 all 来完成此操作和any ,使用complement否定:

const isEqualOr = (values, matchValue) => any(equals(matchValue), values);

isEqualOr([1, 2, 3], 1); //=> true
isEqualOr([1, 2, 3], 5); //=> false

const isEqualAnd = (values, matchValue) => all(equals(matchValue), values);

isEqualAnd([1, 2, 3], 2); //=> false
isEqualAnd([2, 2, 2], 2); //=> true

// const isNotEqualOr = (values, matchValue) => any(complement(equals)(matchValue), values);
// or
const isNotEqualOr = complement(isEqualAnd);

isNotEqualOr([1, 2, 3], 2); //=> true
isNotEqualOr([2, 2, 2], 2); //=> false

// const isNotEqualAnd = (values, matchValue) => all(complement(equals)(matchValue), values);
// or
const isNotEqualAnd = complement(isEqualOr);

isNotEqualAnd([1, 2, 3], 2); //=> false
isNotEqualAnd([1, 2, 3], 5); //=> true

将这些内容设为无积分相当容易,但我认为没有任何充分的理由这样做。

关于javascript - lodash/ramda 中的这些比较案例是否有替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44177151/

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