如何将箭头函数迭代限制为 10 个数据?

How to limit arrow function iterations to 10 data?

如何只搜索10个数据?

  const filterCategory = (category) => {
    return results.filter(
      result => {
      return result.category === category;
      })
  }

过滤器回调的第二个参数是索引。

const filterCategory = (category) => {
  return results.filter(
    (result, index) => {
      if (index >= 10) {
        return false;
      }
      return result.category === category;
    })
  }
}

Mozilla 的文档是很好的资源。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

您可以在 results 数组上使用 slice() 方法来仅获取前 10 个项目,然后您可以像这样过滤那些:

const filterCategory = (category) => {
  return results.slice(0, 10).filter(result => {
    return result.category === category;
  })
}

如果您只想得到 10 个项目作为结果,您可以使用 Array#some 进行迭代,并使用 filterd 数组的新长度进行短路。

const
    filterCategory = (category) => {
        const filtered = [];
        results.some(o => o.category === category && filtered.push(o) === 10);
        return filtered;
    };

这可以通过使用三元运算符来简化

const filterCategory = (category) => {
  return results.filter(
    (result, index) => {
        return index >= 10 ? false : (result.category === category);
    })
  }
}