【问题标题】:How to remove key name from AngularJS object and keep it's value?如何从 AngularJS 对象中删除键名并保留它的值?
【发布时间】:2016-10-18 16:20:30
【问题描述】:

我有一个星期几的复选框。我正在使用 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
                   }
               }            
           }
        };

谢谢。

【问题讨论】:

  • 这不是一个有效的对象,你的意思是像[0, 1]这样的数组吗?请参阅 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 了解 Object.values polyfills
  • 对不起,我已经编辑了问题...对象是 $scope.day = {sun:0, mon:1}
  • 不,您的{0,1} 不是有效对象
  • 这绝对是一个 XY 问题。 meta.stackexchange.com/questions/66377/what-is-the-xy-problem/…。您的 真正 问题是如何检查多个复选框,但您询问了涉及删除键名的潜在解决方案。很遗憾。潜在的解决方案并不是真正有效的。您应该考虑重新审视您的真正问题,并提供更多详细信息来解释您认为不能选中多个复选框的原因。

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


【解决方案1】:

为了保证正确的键顺序,您应该按顺序使用 day 键的数组

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

【讨论】:

    【解决方案2】:

    您可以使用 forEach。顺便说一句,只是 {0,1} 不是有效对象。你需要使用数组。

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

    【讨论】:

    • 小心这个,对象键顺序不保证
    • 谢谢。因此,一旦值在数组中 - 我如何将这些数组值推送到 $rootScope.schedule --> day: $rootScope.day?
    猜你喜欢
    • 2015-07-13
    • 2020-01-23
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 2022-01-19
    • 2018-05-27
    • 1970-01-01
    • 2011-09-11
    相关资源
    最近更新 更多