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