jQuery循环选择最后一项而不是正确添加项目

时间:2014-06-25 10:43:48

标签: jquery

我有一个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
      }
    }
  }
}

当我选择特定作者并选择“所有年份”时,这是可以正常工作的代码。所以我真的需要复制这段代码,并且适用于所有作者&#39;部分,我需要做的是我在循环中的某个地方定义一个作者吗?

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);
}

所以这两部分代码都在一起,如果所有作者都被选中,它会执行第一段代码,如果选择了一个作者,则需要将下拉值分配给作者&#39;变量并将其分配给“新作者”#39;变量然后继续前进以获得年份。然后它将它推入主要的新对象。

我是如何在第一篇文章中复制第二段代码的工作功能的?

由于

0 个答案:

没有答案