jQuery循环选择最后一项,但未正确添加项

jQuery循环选择最后一项,但未正确添加项,jquery,Jquery,我有一个else语句,它触发了一个特定的循环,3个下拉列表,一个是出版商列表,一个是作者列表,一个是相互依赖的年份列表。当我选择一个发布者,然后选择“所有作者”时,它会触发第一个不起作用的循环。当我选择一个发布者,然后选择一个作者时,它会触发第二个循环,这确实有效。我试图修复第一个循环,但似乎无法使其工作 与获取单个数据组不同,我只获取一组数据,所有作者都在其中,如下图所示,未知是我列表中的最后一项,因此我猜循环只是到达列表的末尾,并将其用于originalGenre,并将其中的所有内容捆绑在一

我有一个else语句,它触发了一个特定的循环,3个下拉列表,一个是出版商列表,一个是作者列表,一个是相互依赖的年份列表。当我选择一个发布者,然后选择“所有作者”时,它会触发第一个不起作用的循环。当我选择一个发布者,然后选择一个作者时,它会触发第二个循环,这确实有效。我试图修复第一个循环,但似乎无法使其工作

与获取单个数据组不同,我只获取一组数据,所有作者都在其中,如下图所示,未知是我列表中的最后一项,因此我猜循环只是到达列表的末尾,并将其用于originalGenre,并将其中的所有内容捆绑在一起:

{
  "publisher": "Random House",
    "originalGenre": "Unknown",
      "authors": [{
        "author": "Stephen King",
        "publishedYear": [2008, 2012, 2013]
      }, {
        "author": "Mark Wallace",
        "publishedYear": [2010]
      }, {
        "author": "Will Chambers",
        "publishedYear": [2010, 2013]
      }, {
        "author": "Sally Bernstein",
        "publishedYear": [2014]
      }, {
        "author": "Richard Burns",
        "publishedYear": [2014]
      }]
}
我所期望的是:

"publishers": [{
  "publisher": "Random House",
  "originalGenre": "Horror",
  "authors": [{
    "author": "Stephen King",
    "publishedYear": [2008, 2012, 2013]
  }, {
    "author": "Mark Wallace",
    "publishedYear": [2010]
  }]
}, {
  "publisher": "Random House",
  "originalGenre": "Biography",
  "authors": [{
    "author": "Will Chambers",
    "publishedYear": [2010, 2013]
  }, {
    "author": "Sally Bernstein",
    "publishedYear": [2014]
  }]
}, {
  "publisher": "Random House",
  "originalGenre": "Unknown",
  "authors": [{
    "author": "Richard Burns",
    "publishedYear": [2014]
  }]
}]
我的代码是:

var newObj = {
  'publisher': publisher,
  'originalGenre': "",
  'authors': []
};

if (author == '') {
  for (i = 0; i < data.genres.length; i++) {
    for (j = 0; j < data.genres[i].publishers.length; j++) {
      var originalGenre = data.genres[i].publishers[j].originalGenre;
      if (data.genres[i].publishers[j].publisher == publisher) {
        newObj.authors = newObj.authors.concat(data.genres[i].publishers[j].authors);
        newObj.originalGenre = originalGenre;
        break
      }
    }
  }
}
当我选择一个特定的作者并选择“所有年份”时,这就是我所期望的代码,所以我只需要复制这段代码并应用到“所有作者”部分,我所需要做的就是在循环中的某个地方定义一个作者,我想

else {
  var newAuthor = {
    'author': author,
    'publishedYear': []
  };

  if (year == '') {
    for (i = 0; i < profileData.genres.length; i++) {
      var originalgenre = profileData.genres[i].genre;
      for (j = 0; j < profileData.genres[i].publishers.length; j++) {
        for (k = 0; k < profileData.genres[i].publishers[j].authors.length; k++) {
          if (profileData.genres[i].publishers[j].authors[k].author == author) {
            newAuthor.publishedYear = profileData.genres[i].publishers[j].authors[k].publishedYear;
            newObj.originalgenre = originalgenre;

          }
        }
      }
    }
  }
  newObj.authors.push(newAuthor);
}
所以这两段代码都在一起,如果选择了所有作者,它将执行第一段代码,如果选择了一个作者,它将获取分配给“author”变量的下拉列表的值,并将其分配给“newAuthor”变量,然后继续获取年份。然后将其推入新的主obj

有没有办法在第一段代码中复制第二段代码的工作功能


谢谢

不幸的是,我使用的是IE8,无法使用JSFIDLE,只是无法在all@Hagbard我建议在进行web开发时,手头有多个浏览器。下载和安装chrome或firefox不需要很长时间。我不使用自己的电脑,因为公司的政策,我只能使用IE8,这让我发疯,但没有什么可以做的。强迫开发人员只使用IE8进行开发应该违反他们的人权!: