从仍然返回重复项的对象数组中设置

时间:2018-03-28 17:42:49

标签: javascript wordpress set

我有一个回调函数,可以多次点击wordpress api,并从响应中连接特定类别的一系列帖子。它工作正常但是当它到达最后一个调用时它会向数组添加一些重复项,我认为这会导致问题进一步发生。

我已尝试使用set删除这些重复项,但由于某些原因,仍会返回这些副本。

下面我记录了数组的长度。

在撰写本文时,有:

40 类别博客

的独特帖子

257 类别功能的唯一帖子

但是对于这些功能,数组仍然包含 300 项目

有谁知道为什么会这样?

function getPostsOfType(category) {
    return new Promise((resolve, reject) => {
    const getData = (category, number = 0, page = 0) =>
      fetch(`https://public-api.wordpress.com/rest/v1/sites/www.accessaa.co.uk/posts?category=${category}&number=${number}&page=${page}&order_by=date`)
        .then(res => res.json())

    const found = (category) => getData(category).then(json => json.found);

    found(category)
      .then((value) => {
          return Math.ceil(value/100);
      })
      .then((callsToMake) => {
          let tasks = [];
          for (i = 0; i < callsToMake; i++) {
              tasks.push(getData(category, 100, i)) //<--- Fill tasks array with promises that will eventually return a value
          }
          return Promise.all(tasks); //<-- Run these tasks in parallel and return an array of the resolved values of the N Promises.
      })
      .then((arrOfPosts) => {
          let allPosts = [];
          for(var elem of arrOfPosts)
              allPosts = allPosts.concat(elem.posts);
          console.log(Array.from(new Set(allPosts)).length);
      }).catch((err) => {
          console.log(err);
          reject(err);
      })
  })
}

getPostsOfType('blog') //returns 40
getPostsOfType('features') //should return 257(ish) still returns 300

0 个答案:

没有答案