返回数组中所有对象的特定值

时间:2013-02-27 19:11:06

标签: javascript arrays object

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

我错过了什么?

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

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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 [];
}

答案 2 :(得分:0)

返回语句中断了函数,因此一旦它返回到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;
}