当前位置: 首页 > 知识库问答 >
问题:

数组中的ng重复数组

林华皓
2023-03-14

我试图用ng repeat in Angular来重复一个多维数组的子数组。我的json对象是这样的:

 $scope.items =   [{    "id":1,
        "BasisA":"1",
        "Basis":true,
        "personSex":"m",
        "isCollapsed":false,
        "name":"Mark Polos",
        "age":"1955",
        "results":[{"1000":{"company_name":"***","model":"***","modelname":"***","pr":222,"rating":4.5,"priority":9,"matching":1},
                    "1001":{"company_name":"***","model":"***","modelname":"***","pr":228.7,"rating":5.7,"priority":7,"matching":2},
                    "1002":{"company_name":"***","model":"***","modelname":"***","pr":241.7,"rating":1.9,"priority":4,"matching":3}
                }]
    }]

我尝试了这样的东西:

... data-ng-repeat="item in items">

然后在这个孩子的表中:

<tr data-ng-repeat="i in item | orderBy:'insItem.pr'">

共有3个答案

巫马修然
2023-03-14

我使用了三个嵌套的< code>ng-repeat指令来实现这种滚动:-)第三个< code>ng-repeat使用< code>ng-repeat="(key,value) in result"功能来显示所有结果对象的键和值,我在这个答案的帮助下,了解了如何在ng-repeat中迭代键和值。< code>orderBy:部分还没有工作(如果有人知道如何实现,那么任何帮助都是受欢迎的)。

    <ul>
      <li ng-repeat="item in items">
         id: {{item.id}}, name: {{item.name}}, age: {{item.age}}, results: 
         <table>
           <tr ng-repeat="result in item.results">
             <td>
               <table style="border: 1px solid black;">
                  <tr ng-repeat="(key, value) in result | orderBy: value.pr">
                    <td> {{key}} </td> <td> {{ value }} </td>
                  </tr>
              </table>
            </td>
          </table>
      </li>
    </ul>

扑通一声

庄实
2023-03-14

您应该访问结果字段:

... data-ng-repeat="item in items">

<tr data-ng-repeat="i in item.results">

因为嵌套数组位于主对象的results属性中。

郭翰翮
2023-03-14

看起来结果属性实际上并不是一个“数组”如果这只是您示例中的一个错误,请忽略。如果不是...继续阅读。

它看起来像一个带有单个项目的数组,而该项目是一组属性,这些属性反过来又是对象。换句话说,您可以使用看起来像item.results[0]["1000"]. pr的代码来引用名为“1000”的结果的属性“pr”,而不是使用看起来像您的ng-重复期望的代码(item.results[0]. pr)。

当您获得项目时,是否可以转换它们,以便结果是一个真正的数组?

或者-您可以在控制器内部使用一个函数来返回您要查找的数组吗?

查看代码:

<... data-ng-repeat="result in resultsFromItem(item)" >

控制器代码:

$scope.resultsFromItem = function (item) {

   if(item==undefined || item.results==undefined || item.results.length==0) {
      return [];
   }

   var myResults = [];
   for (var key in item.results[0]) {
      if(item.results[0].hasOwnProperty(key)) {
         myResults.push(item.results[0][key]);
      }
   }

   return myResults;

}

如果您愿意,您甚至可能决定将“转换的”结果对象挂起到每个项目对象上(因此您只需要执行一次转换)。

 类似资料:
  • 我想创建一个数组,使其包含一些标识名,并且对于这些名称中的每一个,都有另一个关联的数组。我的做法是,, 执行此操作后,我得到如下结果:, 下次调用此函数时,我需要检查1-1是否存在,如果存在,我需要获取与1-1相关的列表。我该怎么做。。?如果1-1不在myArray中,我将调用其他函数。

  • 问题内容: 有没有一种方法可以定义次数,而不必总是遍历数组? 例如,在下面,我希望列表项显示5次,并假设等于5,并且增加数字,因此每个列表项都按1、2、3、4、5递增 所需结果: 问题答案: 较新版本的AngularJS(> = 1.3.0)允许您仅使用变量(无需功能)来执行此操作: 在首次提出问题时这是不可能的。感谢@Nikhil Nambiar从下面的回答中获得此更新 原创(5/29/2013

  • 我有一个数组。如何按类型、名称和大小以及递增量找到双重许可。增加数量后删除相同的。

  • 题目链接 牛客网 题目描述 在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 // html Input: {2, 3, 1, 0, 2, 5} Output: 2 解题思路 要求时间复杂度 O(N),空间复杂度 O(1)。因此不能使用排序的方法,也不能使用额外的标

  • 我需要一个数据列表,该列表通过其定义的属性(监控)进行过滤,我不能只执行以下操作: 因为我需要计算未受监控的。 对于这个示例,我简化了从getProjects()返回的数据,通常是: 我将首先遍历this.projects.owner,然后遍历模板中的其余部分。此处未监控的总数将等于1。 所以我想我不能用这种方法 例子: 样板 控制器: 模板正确显示了2个结果: 项目1项目2 但console.l

  • 我被问到一个面试问题,要求我返回数组中重复次数最多的数字,例如,{1,1,2,3,4}返回1。 我首先在hashtable中提出了一种方法,它要求空间复杂度O(n)。然后我说先对数组排序,然后遍历它,然后我们就可以找到数字了。 有什么优化吗? 谢了。