【问题标题】:I'm confused about this statement, Object.entries我对这个声明感到困惑,Object.entries
【发布时间】:2021-11-14 15:59:41
【问题描述】:
useEffect(() => {
  cat &&
    setFilteredProducts(
      products.filter((item) =>
        Object.entries(filters).every(([key, value]) =>
          item[key].includes(value)
        )
      )
    );
}, [products, cat, filters]);

我一直在看视频,一遍又一遍,但我似乎无法正确理解,有人可以帮我逐行解释吗? "cat &&" 我已经明白了,但其余的让我感到困惑。

【问题讨论】:

    标签: javascript reactjs object logic use-effect


    【解决方案1】:

    逐行浏览上面的代码:

    我假设您有一个带有 setter 函数 setFilteredProducts 和两个数组 productsfilters 的状态变量,每个数组都有对象作为值。

    我们正在根据products 变量中存储的过滤值在状态变量中设置值。

    Object.entries 只返回一个数组,其中每一项都是一个数组,其第一个值作为键,第二个值作为对应值,every 是另一个函数,适用于 Object.entries 函数返回的数组

    every函数接受一个回调函数作为参数,它测试数组中的所有元素是否通过回调实现的测试。

    本例中实现的测试是item[key].includes(value),它测试products数组中每个被迭代的元素(一个对象)是否有一个对应于key的数组,其中有value

    你可以参考 Object.entries这里:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries

    Array.prototype.every:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every

    Array.prototype.filter:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

    Array.prototype.includes:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-25
      • 1970-01-01
      • 2014-01-19
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 1970-01-01
      • 2018-09-29
      相关资源
      最近更新 更多