我有一个名为removeIndex
的自定义过滤器,它会删除数组的第一个索引。我想修改它,所以它首先对数组进行排序,然后删除第一个索引。但是,当我尝试这样做时,我的应用程序冻结了。这就是我所拥有的:
filters: {
removeIndex: function(value) {
sort(value); // this crashes my browser
return value.slice(1, value.length);
}
}
为什么会导致我的浏览器崩溃?还有另一种方法我应该这样做吗?我只想在切片之前对数组进行排序。
更新:当我执行console.log(value)
时,这就是我所得到的:
所以它不仅仅是一个平面阵列,还有其他东西与它相关联。
以下是我使用它的方式:
<tbody v-repeat="company in companies | filterBy searchText | orderBy 'name'">
<tr>
<td class="center aligned border" rowspan="@{{ company.applications.length }}" bgcolor="#F9FAFB"><a href="#"><strong>@{{ company.name }}</strong></a></td>
<td><a href="#">@{{ company.applications[0] }}</a></td>
</tr>
<tr v-repeat="company.applications | removeIndex">
<td><a href="#">@{{ $value }}</a></td>
</tr>
</tbody>
@
标志,因为我在Laravel应用程序中使用它。
答案 0 :(得分:0)
假设value是一个数组?
filters: {
removeIndex: function(value) {
return value.sort().slice(1);
}
}
通过您可能想要提供自己的排序方法,因为默认排序方法是基于Unicode的实现:
filters: {
removeIndex: function(value) {
return value.sort(function(a,b) { // return -1,0,1 as required})
.slice(1);
}
}
答案 1 :(得分:0)
这个问题确实是一个无限循环。我在Vue GitHub页面上发现了一个与我非常相似的问题:
https://github.com/yyx990803/vue/issues/1153
解决方案是首先对数组进行切片以创建副本,然后直接应用sort函数,如下所示:
return value.slice().sort().slice(1)