0

次のコードは、配列「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;
      }
   }
}
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 に答える