使用Lodash _.map和Typescript创建新的过滤列

时间:2016-02-24 23:10:38

标签: angularjs typescript lodash

在我的控制器中,我的代码过滤得很好,但我想创建一个新的字段,用于连接html中Angular过滤器的两个字段。这就是我没有用的东西..这可能吗?

"always use Comparable<? super T> in preference to Comparable<T>. <T extends Comparable<? super T>>"

2 个答案:

答案 0 :(得分:0)

这不是地图的工作方式。在回调函数中,您需要返回一些内容:

_.map([0,1,2], (x) => x + 1)
> [1,2,3]
// old syntax
_.map([0,1,2], function (x) { return x + 1 })
> [1,2,3]

您只需将_.map替换为_.forEach即可,您将在data.carHopList中获得映射数据。

澄清:

我不善言辞,所以让我在这里为forEachmap提供非常简单的实现:

// these functions do not mock lodash counterparts 100%
// as lodash fns can work with objects too
// and they have some shortcuts, see docs

function forEach(arr, callback) {
  for(var i = 0; i < arr.length; i++) {
    callback(arr[i], i);
  }
  return arr;
}

function map(arr, callback) {
  var newArr = [];
  for(var i = 0; i < arr.length; i++) {
    newArr[i] = callback(arr[i], i);
  }
  return newArr;
}

答案 1 :(得分:0)

有人指引我朝地图方向走。我最终做的是通过将它添加到控制器来使用Angular:

    filterTextByCols = (row) => {
        return (angular.lowercase(row.fullName).indexOf(angular.lowercase(this.filterQuery) || '') !== -1 ||
            angular.lowercase(row.birthDate).indexOf(angular.lowercase(this.filterQuery) || '') !== -1);
    }

然后在filter中使用filterTextByCols:

<div ng-repeat="person in vm.persons | orderBy:sortType:sortReverse | filter: vm.filterTextByCols">