这段代码什么意思?

   const categories = [];
        for (let i = 0; i < this.keyword.datas.length; i++) {
          if (i === 0) {
            categories.push({
              name: this.keyword.datas[0].type,
            });
          }
          for (let j = 0; categories[0] !== undefined && j < categories.length; j++) {
            if (categories[j].name === this.keyword.datas[i].type) {
              // 存在了
              break;
            }
            if (j === categories.length - 1) {
              categories.push({
                name: this.keyword.datas[i].type,
              });
            }
          }
        }

这段代码什么意思?明白的人帮忙解释一下,现在准备改写,只能看懂一半

阅读 1.9k
3 个回答

categories 应该是 分类 或者 目录
有个 i 看起来还有个外层循环

如果 categories 数组里没有 name = this.keyword.datas[i].type 项时
this.keyword.datas[i].type 放到 categories

if (j === categories.length - 1) {
categories.push({
name: this.keyword.datas[i].type,
});
}

这个判断 就是 循环到底,还没有找到的时候,把 this.keyword.datas[i].type 放到 categories

首先新创建的数组只会push到一个值,这个值和另一个做比较找出有的直接break 最后那个if没啥用吧? 因为只会走一次push那么长度始终为1才对

创建一个数组categories
把keyword.datas数组里的对象的type值提取生成{name: type} json对象
插入到categories末尾 这个过程中去除了重复的type

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题