Javascript 如何筛选有时未定义的值?

Javascript 如何筛选有时未定义的值?,javascript,angularjs,angularjs-filter,Javascript,Angularjs,Angularjs Filter,我有一个特定对象的树状结构应用程序。每个对象都有一个id,并且可能有一个父对象 不幸的是,{u id:current}的明显过滤器在当前id未定义时(例如在根级别)不能正常工作。设置电流时工作正常,未设置时故障 我是否可以编写一个表达式,使未定义的表达式与实际值相匹配 例如: <ol> <li ng-repeat='item in list | filter:{parent:current_item_id}'> <a ng-click='cu

我有一个特定对象的树状结构应用程序。每个对象都有一个id,并且可能有一个父对象

不幸的是,{u id:current}的明显过滤器在当前id未定义时(例如在根级别)不能正常工作。设置电流时工作正常,未设置时故障

我是否可以编写一个表达式,使未定义的表达式与实际值相匹配

例如:

<ol>
    <li ng-repeat='item in list | filter:{parent:current_item_id}'>
        <a ng-click='current_item_id = item._id'>{{ item }}</a>
    </li>
</ol>

您可以创建一个自定义的过滤器来进行相应的过滤,如果您希望有所不同,请修改它

angular.module('app').filter('myfilter', function() {
  return function(array, current_id) {
    return (array || []).filter(function(item) {
      if (typeof item.parent == 'undefined') {
        return true;
      } else {
        return item.parent == current_id;
      }
    });
  };

});

你能展示你的json吗?@Dvir完成!添加了json示例。我试图用表达式解决问题,但运气不好。但是你可以用函数比较器来代替指令。我希望避免编写自定义过滤器——已经完成了一个更通用的版本。似乎有一种方法“应该”做到这一点,它不涉及自定义过滤器。它只是一个等式运算符,等式的一侧偶尔是“未定义的”。
angular.module('app').filter('myfilter', function() {
  return function(array, current_id) {
    return (array || []).filter(function(item) {
      if (typeof item.parent == 'undefined') {
        return true;
      } else {
        return item.parent == current_id;
      }
    });
  };

});