javascript - 当数据改变时组织数组

标签 javascript arrays angularjs sorting angularjs-scope

我在 $scope 变量中有一个数组,如下所示:

$scope.objects: [
  {selected: true, description: 'string1'},
  {selected: false, description: 'string2'},
  {selected: true, description: 'string3'},
  {selected: true, description: 'string4'}
]

“选定”属性可以通过 UI 中呈现的复选框进行更改。

我正在寻找一种方法来观察数组中的“选定”属性。每次改变时,数组都需要重新排序。

带有“selected:false”的对象需要放在数组的末尾。上面的数组看起来像这样。

$scope.objects: [
  {selected: true, description: 'string1'},
  {selected: true, description: 'string3'},
  {selected: true, description: 'string4'},
  {selected: false, description: 'string2'}
]

例如,如果第二个元素的 selected-value 更改为 false,则数组应如下所示:

$scope.objects: [
  {selected: true, description: 'string1'},      
  {selected: true, description: 'string4'},
  {selected: false, description: 'string3'},
  {selected: false, description: 'string2'}
]

谁能帮我解决这个问题吗?

问候

最佳答案

您应该编写一个过滤器来为您进行排序。

我会尝试这样的事情,使用 lodash .
该代码片段未经测试或任何内容,只是用记事本编写,但它可以为您提供一个起点。

app.filter('sortSelected', function() {
    return function(items) {
        var groups = _.groupBy(items, 'selected');
    };
    var selected = _.sortBy(groups[true], 'description');
    var unselected = _.sortBy(groups[false], 'description');

    return selected.concat(unselected);
});

关于javascript - 当数据改变时组织数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30640065/

相关文章:

用于棋盘游戏的 Javascript 游戏框架或库?

javascript - Uglify JS 使用选项卡进行美化

javascript - 在 JavaScript 中动态引用数组

javascript - 当用户在输入字段中输入数据时,无法动态显示数据

javascript - Angular 从服务返回 promise 对象。尝试访问值来更改 ng-if 指令

javascript - 根据窗口高度 Bootstrap 模态高度

javascript - DateTimePicker 从数据库中预定日期和时间

javascript - 使用 NgRepeat 访问匿名数组

python - Numpy 数组上的分段函数

angularjs - 在 ng Select 中设置默认值