AngularJS将一个对象映射到另一个对象

时间:2014-10-02 10:56:29

标签: javascript angularjs

如果原始字段为空,我想在条件下将$scope.filters对象映射到var criteria

所以我想说:

$scope.filters = {
    name: 'myName'
    lastName: null,
    age: null,
}

我希望我的var criteria映射到非空字段,如下所示:

var criteria = {
    name: 'myName';
}

所以我试过这样:

var criteria = {};

angular.forEach($scope.filters, function (value, key, obj) {
        if (value != null) {
            this.push(obj)
        }
}, criteria);

但我想我错过了什么。

2 个答案:

答案 0 :(得分:1)

criteria是一个对象,而不是一个数组,所以你不能推它。如果要存储单独的单个条件,请将其设为数组,或者使用this[key] = value;

替换推送

答案 1 :(得分:1)

你应该这样做,

$scope.filters = {
  name: 'myName'
  lastName: null,
  age: null,
 }

var criteria = []; //array, you were using object
    angular.forEach($scope.filters, function(value, key) {
      if (value != null) {
            this.push(key + ': ' + value);
        }

    }, criteria);  

expect(criteria).toEqual(['name: myName']);

希望它有所帮助。