gpt4 book ai didi

javascript - 过滤 obj[array[@]] 为 nil 或空的数组

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

再次练习 Ramda。
所以情况是我有一个对象:

const originalObj = {
foo: "bar",
std: "min",
baz: "",
key1: undefined,
key2: "exit",
key3: "val3",
key4: "",
};
我有一个我事先知道的数组:
const toCheckArray = ["baz", "key1", "key2", "key3", "key4", "key5"];
对于数组中的每个元素,我需要检查obj中是否存在这样的元素(作为key),以及对应的值是否为nil/empty。如果这样的键存在,并且值不为零/空,那么我会进行这样的 HTTP 调用来更新值:
const findKey2AndUpdateObj = async (originalObj) => {
const originalKey2 = originalObj.key2;
const key2 = await remoteHttpCall(originalKey2);
return { ...originalObj, key2: key2 };
};
对于数组中的所有元素,除了有效负载之外,远程 HTTP 调用将完全相同。
我的做法是先过滤列表,执行以下步骤:
  • const hasArray = filter(has(__, originalObj), toCheckArray);我相信这会检查作为 Prop 的元素是否存在于目标 obj 中;
  • 我正在尝试申请 complement(anyPass([isNil, isEmpty]))到 obj 的所有值,然后以某种方式过滤数组中的相应键;
  • 迭代数组?进行 API 调用,然后更新 obj。

  • 我想我在想的不是最好的方法。很想听听你的想法!
    记住 API 调用也会很棒!

    或者我应该翻转第 1 步和第 2 步?从 obj 中过滤掉所有的 nil/empty,然后执行 has查看。

    我最终这样做了: filter(has(__, reject(anyPass([isEmpty, isNil]))(obj)), __)(arr) .但肯定有更好的方法。
    干杯!

    最佳答案

    使用管道,在某种意义上说,您可以将对象传递到管道中并输出 key ,从而使其功能更强大,例如

    pipe(reject(either(isNil, isEmpty)),keys,intersection(arr))(obj)
    然后,您可以将其通过管道传输到 api 调用中(使用 pipeWith )

    关于javascript - 过滤 obj[array[@]] 为 nil 或空的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68462883/

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