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

Javascript 返回数组中所有对象的特定值,javascript,arrays,object,Javascript,Arrays,Object,以下代码仅返回数组“category”中第一项的“name”。但是,我需要它返回数组中每个项的“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].

以下代码仅返回数组“category”中第一项的“name”。但是,我需要它返回数组中每个项的“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;
      }
   }
}
函数加载类别(id){

对于(var i=0;i
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;
}
函数加载类别(id){
变量名称=[];

对于(var i=0;iReturn语句,它是从函数中分离出来的,因此一旦它命中该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;
}
函数加载类别(id){
var结果=[];
对于(var i=0;i
函数装入类别(id){
var items=folder.grades.models;

对于(var i=0;iWhy您使用相同的
i
作为
模型
类别
的索引?好奇..如果我还想获得另一个属性,如“年龄”我是否需要在当前函数中编写另一个函数或for循环?您可以将
return c.name;
替换为
return[c.name,c.age]
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 [];
}