Angular 2中与Angular $.grep()方法相当的方法是什么?

3
我该如何使用Angular 2方法重构此代码?我在Google上找不到任何相关信息。
var tooltipsData = $.grep(tooltips, function (element, index) {
    return (element.ProductCode == ProductCode);
});

我不懂Angular1。你想要实现什么? - Günter Zöchbauer
2个回答

8

看起来你真正想做的是在没有jQuery的情况下实现它(Angular 2仍然只是JavaScript(或TypeScript))。 如果你想在JS中实现它,请使用Array.filter函数

var tooltipsData = tooltips.filter(function (element, index) {
   return (element.ProductCode === ProductCode);
});

1
谢谢!这应该可以工作。我喜欢它使用了JS内置方法。 - Adrian Moisa
可能不是问题,但我认为值得提一下的是,浏览器仅支持IE9及以上版本的过滤功能。 - eatinasandwich

2

Angular1与Jquery:

var tooltipsData = $.grep(tooltips, function (element, index) {
        return (element.ProductCode == ProductCode);
  });

Angular2:

this.tooltipsData = tooltips.forEach((element, index)=>{
   return (element.ProductCode == ProductCode);
});

您可以使用以下方法:
this.tooltipsData = tooltips.filter((element, index) => {
   return (element.ProductCode == ProductCode);
});

1
谢谢!我喜欢使用lambda函数。我还在逐渐熟悉它们。 - Adrian Moisa
1
forEach总是返回未定义,因此以这种方式使用它将无法解决问题,因为tooltipsData始终为undefined - Michele Ricciardi
在这里点踩没有任何意义。 - micronyks
1
@Adrian 如果你在使用Typescript,你应该遵循lambda/箭头函数。 - micronyks
forEach() 方法针对每个数组元素执行一次回调函数;与 map() 或 reduce() 不同,它总是返回 undefined 值且不可链式操作。典型的用例是在链式操作的末尾执行副作用。 - Michele Ricciardi
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接