Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Angularjs合并相同的单元格_Javascript_Angularjs - Fatal编程技术网

Javascript 使用Angularjs合并相同的单元格

Javascript 使用Angularjs合并相同的单元格,javascript,angularjs,Javascript,Angularjs,我想知道是否有一种方法可以使用angularjs动态合并相同的单元格,在下图中,如果我有两个单元格,每个单元格的值相同 $scope.rows=[“第1行”、“第2行”、“第1行]; {{row}} 所以我需要动态计算相同单元格的数量,同时得到一个表,而不是楼梯:D,因为我试图 <td rowspan="{{row.length}}">{{row}}</td> {{row} 我有一些漂亮的楼梯。。。我需要你的帮助 我在ng repeat中使用它

我想知道是否有一种方法可以使用angularjs动态合并相同的单元格,在下图中,如果我有两个单元格,每个单元格的值相同

$scope.rows=[“第1行”、“第2行”、“第1行];
{{row}}
所以我需要动态计算相同单元格的数量,同时得到一个表,而不是楼梯:D,因为我试图

<td rowspan="{{row.length}}">{{row}}</td>
{{row}
我有一些漂亮的楼梯。。。我需要你的帮助

我在ng repeat中使用它。 这是我的密码:

 <tr ng-repeat="rowContent in rows track by $index">
<td>{{rowContent}}</td>
<td>{{rowContent}}</td>
<td>{{rowContent}}</td>
 </tr>

{{rowContent}}
{{rowContent}}
{{rowContent}}
如果同一个值出现多次,我应该合并单元格并得到以下结果:

我使用的是角度1.X 这方面我真的需要帮助。
谢谢

ng repeat不能这样做

您需要预处理数据数组,查找重复项,并将每个元素作为具有值和频率的对象创建另一个数组。 ng在新数组上重复并根据频率指定行的高度(您可以使用ng样式动态绑定高度)

尝试以下操作:

$scope.rows = ['Row 1', 'Row 2', 'Row 1'];
$scope.rows = $scope.rows.filter((v, i, a) => a.indexOf(v) === i);

下面是一个嵌套for循环,用于检查数组值是否重复。 它将创建一个新的对象数组,该数组的行跨度为:

$scope.uniqueRows = [];

$scope.rows.forEach(function(r) {
    var duplicate = null;
    $scope.uniqueRows.forEach(function(ur) {
        if(r == ur.value) duplicate = r;
    });
    if(duplicate) duplicate.counter++;
    else $scope.uniqueRows.push({"value": r, "counter": 1});
});
使用以下代码显示该值:

<tr ng-repeat="r in uniqueRows">
     <td rowspan="{{r.counter}}">{{r.value}}</td>
</tr>

{{r.value}}

您可以尝试为此使用自定义“groupBy”筛选器。例如,我们可以看到类似的例子。代码可能如下所示:

 <tr ng-repeat="(index, rowContent) in rows | groupBy: 'name">

虽然此代码可以回答问题,但提供有关如何和/或为什么解决问题的附加上下文将提高答案的长期价值。
 <tr ng-repeat="(index, rowContent) in rows | groupBy: 'name">