0

以下代码仅返回数组“类别”中第一项的“名称”。但是我需要它来返回数组中每个项目的“名称”值。

我错过了什么?

function loadCategories(id){
   for (var i = 0; i<folder.grades.models.length; i++){
      if(folder.grades.models[i].attributes.entityid==id) {
         return folder.grades.models[i].attributes.categories.category[i].name;
      }
   }
}
4

3 回答 3

1

return退出函数,您应该将所有名称添加到数组中,然后返回该数组

function loadCategories(id){
   var names = [];
   for (var i = 0; i<folder.grades.models.length; i++){
      if(folder.grades.models[i].attributes.entityid==id) {
         names[i] = folder.grades.models[i].attributes.categories.category[i].name;
      }
   }
   return names;
}
于 2013-02-27T19:15:36.423 回答
1
function loadCategories(id){
   var items = folder.grades.models;
   for (var i = 0; i<items.length; i++){
      if(items[i].attributes.entityid==id) {
         return items[i].attributes.categories.category.map(function(c) {
            return c.name;
         });
      }
   }
   return [];
}
于 2013-02-27T19:20:57.107 回答
0

Return 语句从函数中分离出来,所以一旦它到达那个 return 语句,函数就结束了。如果您想要所有与实体 id 匹配的类别名称:

function loadCategories(id){
   var result = [];
   for (var i = 0; i<folder.grades.models.length; i++){
      if(folder.grades.models[i].attributes.entityid==id) {
         for (var j = 0; j < folder.grades.models[i].attributes.categories.category.length; ++j) {
            result.push(folder.grades.models[i].attributes.categories.category[j].name);
         }
      }
   }
   return result;
}
于 2013-02-27T19:17:02.693 回答