如何从AngularJS对象中删除键名并保持其值?

时间:2016-06-17 00:07:13

标签: angularjs object key-value angularjs-ng-model

我有一周中的日期复选框。我正在使用ng-model但是不能为每个使用相同的模型,因为它可以防止检查多个盒子。因此,作为一种解决方法,我使用了以下格式的模型:day.sun,day.mon等。

对象结果为:$ scope.day = {sun:0,mon:1}。

我需要删除键名,以便对象看起来像这样:$ scope.day = {0,1}

有没有办法删除密钥名称?我在线查看过,大多数示例都显示删除键/值对。 Object.values()是我遇到的另一个选项,但是我收到一个未定义的错误。

我需要将该值({0,1})存储到以下对象中:

$rootScope.schedule = {
           "@": {
               "let_run": "yes",
               "when_holiday": "ignore_holiday",
                "begin":"00:00",
               "end":"24:00"
           },               

           "weekdays": {            
               "day": {
                   "@": {
                       **"day": $rootScope.day,**
                   }
               }            
           },
           "monthdays": {            
               "day": {
                   "@": {
                       "day": $rootScope.startDate
                   }
               }            
           }
        };

感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用forEach。 BTW只是{0,1}不是有效的对象。你需要使用数组。

$scope.newObj = [];
$scope.Object={sun:0, mon:1};
angular.forEach($scope.Object,function(val,key){
    $scope.newObj.push(val);
})

答案 1 :(得分:1)

为了保证正确的密钥订单,您应该按顺序使用键数组

var day = {sun: 0, mon: 1, ... },
    days = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'],
    dayValues = days.map(function(key) {
        return day[key] || 0;
    });